QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2147|回复: 1
打印 上一主题 下一主题

[代码资源] FM调制解调系统

[复制链接]
字体大小: 正常 放大
李秋锐        

14

主题

14

听众

76

积分

升级  74.74%

  • TA的每日心情
    奋斗
    2015-3-29 18:44
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    社区QQ达人

    跳转到指定楼层
    1#
    发表于 2015-2-1 19:22 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    %FM调制解调系统.m- j7 c: s4 x2 G+ h# p: [! L. y
    %频率调制与解调的Matlab演示源程序! m0 a3 t/ `* F5 W" y. Z
    %可以任意改原调制信号函数m(t)
    5 A! w5 P/ p2 ^1 O: G& I& \%电子信息工程  杜怀超 091308305  
    5 {& v) Z4 r  x( U%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·' h* S" V  o2 U; h0 I8 V) `
    %*****************初始化******************% ^0 ^" {# d+ N5 C' c
    echo   off       3 f+ o1 Z6 ]( u
    close  all+ Y% }* F! y9 ?. u# q' m
    clear  all
    8 P, q6 k  ~; D, E; o) vclc
    2 B$ ]" _1 Q  @8 n+ I%*****************************************! O/ S. e0 i) X
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·+ G, {& x0 N1 @* r1 t
    %****************FM调制*******************
    2 l$ {& e: U6 w7 \- H: @dt=0.001;                                   %设定时间步长9 D5 k1 ^. t. L1 s# k8 C
    t=0:dt:1.5;                                       %产生时间向量
    $ Y0 [7 x+ `/ R1 Q5 w1 f. Zam=5;                                      %设定调制信号幅度
    % W6 |  V+ Q0 e. Z' j( J. efm=5;                                      %设定调制信号频率. \4 N3 `* a3 j! f
    mt=am*cos(2*pi*fm*t);                        %生成调制信号8 V0 G; D- P  t- D
    fc=50;                                      %设定载波频率5 n5 X( Q/ v' D2 g* d* `/ r! n
    ct=cos(2*pi*fc*t);                             %生成载波" R8 r7 @: V1 E
    kf=10;                                      %设定调频指数7 u- N/ M6 ~/ r; o7 e
    int_mt(1)=0;$ n! r2 u: ~! {+ H: E
    for i=1:length(t)-1  + O/ ?4 \: B( ?7 w
        int_mt(i+1)=int_mt(i)+mt(i)*dt;               %求信号m(t)的积分
    / l5 I2 F, k% J* c+ s2 o$ Q( V5 v9 oend                                          %调制,产生已调信号$ e* ~+ D$ w$ `$ L$ _5 Z
    sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt);            %调制信号
    % t; E/ `9 I- J3 _%*****************************************
    3 y0 B- ~' ?. ]+ l. u& Q# {3 C%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·, M9 y' b, v. z
    %*************添加高斯白噪声**************
    2 N( x; ^" [0 U2 B1 v7 ^0 j, Jsn1=10;                                     %设定信躁比(小信噪比)" x6 G( l& y8 Y$ ]! Z0 e
    sn2=30;                                     %设定信躁比(大信噪比): b( L; u0 o6 \% m5 e
    sn=0;                                       %设定信躁比(无信噪比)( G/ r$ t1 |; x# w
    db=am^2/(2*(10^(sn/10)));                     %计算对应的高斯白躁声的方差& h$ [4 x% S" X$ u5 {: }# \
    n=sqrt(db)*randn(size(t));                      %生成高斯白躁声
    9 F& M  T6 N0 ?1 o1 p0 n) A$ ]nsfm=n+sfm;                                %生成含高斯白躁声的已调信号(信号通" v* m" X& l; q) b5 |3 M+ z
    %过信道传输)+ u; S6 x( Q3 Y7 w' h, @
    %*****************************************
    & y* |' \* T  M6 {) C%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    + T& x2 Y2 X, D5 W%****************FM解调*******************  ]8 {: ?' q, V1 {8 D! K$ L( S: f# J. w
    for i=1:length(t)-1                             %接受信号通过微分器处理; l8 @$ I6 S  X; K8 B+ N* F7 q
        diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
    6 O' _1 {0 r* y) h0 g( I7 q6 e* Lend' Y* {4 t, ~& b$ _2 u
    diff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)
    & t% I+ i9 h: L) c3 v: w( c( }& mzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;& Y+ J2 w/ F7 N4 [7 r6 D" b+ D* f7 H
    diff_nsfmn1=diff_nsfmn-zero;. c/ m2 a! a7 X, c$ M
    %*****************************************" j( l# w$ x, @1 ]( s, k* K
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    6 y9 ?- B  X- S%**************时域到频域转换**************( t' [4 w/ F6 a* q3 L
    ts=0.001;                                    %抽样间隔
    ; e9 z& U  d& [# H/ Kfs=1/ts;                                      %抽样频率
    ' K, u# d8 |8 d& f! Zdf=0.25;                                     %所需的频率分辨率,用在求傅里叶变换  w- I( o# O2 @/ r+ {  g+ L
    %                      时,它表示FFT的最小频率间隔
    / f9 ]! ]- e8 S3 e$ {%*****对调制信号m(t)求傅里叶变换*****
    8 d) A0 ?% k( N- _9 S" Im=am*cos(2*pi*fm*t);                         %原调信号
    # Z- O  }& v( d1 R) lfs=1/ts;
    9 u( B1 L6 {; a: a2 U3 vif nargin==2
    $ k5 k3 b1 ]# u1 n0 w0 g7 K    n1=0;
    0 L$ t& q! G+ m7 O6 Xelse) m1 g1 }2 e( |: B* ?* l( ]
        n1=fs/df;
    ' n( H2 U& v& T6 x# J) iend
    " l$ c, [! r7 Cn2=length(m);
    4 e! C; S& h+ }1 _0 Z& cn=2^(max(nextpow2(n1),nextpow2(n2)));
    * V% A$ w- Y; f! i/ y) |9 AM=fft(m,n);8 A9 R6 K: Y9 o
    m=[m,zeros(1,n-n2)];$ z% T/ `1 {& z+ \6 e3 h. F
    df1=fs/n;                                   %以上程序是对调制后的信号u求傅里变换6 H" n- c5 d' F3 D' J
    M=M/fs;                                   %缩放,便于在频铺图上整体观察' |% g, P  b2 Y; a9 a& Q5 y2 s
    f=[0:df1:df1*(length(m)-1)]-fs/2;                %时间向量对应的频率向量
    0 A+ p* k% J1 P4 m% S, f
    . M* W+ P2 ~. {) [%************对已调信号u求傅里变换**********: V+ n3 c1 U) Y+ ]9 O
    fs=1/ts;
    / Q  S# n0 g6 c5 \6 ]$ Zif nargin==2+ N; ~6 y" o, e# Y
        n1=0;
    % U- _6 d4 d5 U( F2 e% A; Relse
    $ Z8 A5 v# ~4 M% N. i    n1=fs/df;
    ! F7 ^0 \) r& `' k! h: b3 _end7 ?' R! A/ @( J) K
    n2=length(sfm);
    . H" ^+ j. ^) L. {9 e4 Nn=2^(max(nextpow2(n1),nextpow2(n2)));
    ; `0 ~0 Q  G+ ?7 y9 n2 s4 D& |- JU=fft(sfm,n);3 Y: _0 s' n) e) Y9 x
    u=[sfm,zeros(1,n-n2)];
    1 S* h' W1 s* ^2 Fdf1=fs/n;                                   %以上是对已调信号u求傅里变换
    , B. T3 L) _. e& Y3 L( L9 `U=U/fs;                                    %缩放0 K6 n) c. g$ V1 S
    %******************************************
    0 h2 ^: q& v: ?8 z%*****************************************8 D+ X' O8 [, Z/ O1 U. c8 D
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    # t. A9 H& h1 P* I2 [& A& m  M%***************显示程序******************
    + X; d. ?7 Q- Y) o9 S- {5 ?- ^disp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')
    - N! Q( G' F$ u4 N2 b* Jpause( B) T& A$ r2 \' g( k$ t( y
    %**************figure(1)******************
    ! l; ]% w* Z! R' H6 Mfigure(1)
    ; o, A  h2 D2 l9 L0 hsubplot(3,1,1);plot(t,mt);                                 %绘制调制信号的时域图4 `/ @. q6 a4 \7 V) A+ ~
    xlabel('时间t');) L0 b) n# P- _2 H$ \) x7 k5 c
    title('调制信号的时域图');# t: T0 \& U" u8 U$ r. s8 ~2 Y
    subplot(3,1,2);plot(t,ct);                               %绘制载波的时域图
    5 V& w% Y& y) s4 j; u8 h" pxlabel('时间t');3 e! G5 l6 t# j, ?4 _; }
    title('载波的时域图');
    9 G6 M" ]7 ~* [4 {subplot(3,1,3);
    6 I. C- N/ S  j, _plot(t,sfm);                                                  %绘制已调信号的时域图. t& d0 P7 P' X4 P  T5 u: U0 y
    xlabel('时间t');
    5 P& q: i7 d: o" x* v2 Qtitle('已调信号的时域图');
    # o  M8 H9 S. K* Z. j%******************************************
    % {9 r- [% |3 u. i+ E" D; ddisp('按任意键可以看到原调制信号和已调信号在频域内的图形')  x. b+ `/ }( C* r- M# ~1 M4 E
    pause7 Y: F! G, A8 ]$ M* f
    %************figure(2)*********************: i5 r. p. S4 V) I+ ~
    figure(2)
    9 Z& @( G, e0 [2 B8 W. M9 Csubplot(2,1,1)
    ' A: Y; b* ]* [5 @0 K! cplot(f,abs(fftshift(M)))                        %fftshift:将FFT中的DC分量移到频谱中心& A" {7 l$ o+ s$ H, w( k
    xlabel('频率f')
    7 p$ a- |+ U# v# H: S( ~6 A" b2 @title('原调制信号的频谱图')% j( H5 t2 D9 }! I5 R: R
    subplot(2,1,2)
    ( C0 T+ u5 `, ~/ g' t9 R3 L: hplot(f,abs(fftshift(U)))
    4 V3 R8 Z2 d8 u5 R" S: s3 j1 Pxlabel('频率f')
    7 J: L8 E+ |  h% h+ u9 Q# |title('已调信号的频谱图')( T$ u$ `% H% b
    %******************************************
    : o; B) E# J2 T8 L( G  j# J; W/ rdisp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')
    ( ~9 W+ P3 v% L- Z/ h7 \" Ppause
    1 }. L- Y0 L6 G) Y6 F, d% L8 f%**************figure(3)******************$ f5 p2 `& q1 Y3 t
    figure(3)
    ; A. O, ~/ m5 J1 Ssubplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图! x' Y; ~+ A0 g# s7 K' N# U$ U  U
    xlabel('时间t');
    7 `  f& h5 v# ]7 ]8 ^: xtitle('调制信号的时域图');
    " N1 ~, y# G  p+ Lsubplot(3,1,2);plot(t,sfm);                              %绘制已调信号的时域图" l! }/ x- B0 U$ ^. G9 g
    xlabel('时间t');" W: ]: o3 S6 Q5 y4 ^1 M
    title('无噪声条件下已调信号的时域图');0 Q( l# F1 B- S
    nsfm=sfm;                              & S  Z7 B7 ]6 r% t/ E) K7 P
    for i=1:length(t)-1                           %接受信号通过微分器处理
    , V* Y" Z/ k+ a% a- L, \    diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
    7 B; ?- l& D/ Q' d. D& Qend( z- Z4 `* g- |4 ^* P! U: ^
    diff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)
    2 W9 p3 g: Y$ L4 Z; pzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    & h( B! t! k+ O+ ?0 @diff_nsfmn1=diff_nsfmn-zero;
    $ v5 Y2 z6 a0 \( Zsubplot(3,1,3);                             %绘制无噪声条件下解调信号的时域图5 P9 J1 w2 G( R& k
    plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');: K3 D/ J4 @  d7 X7 _
    xlabel('时间t');                          & M6 p2 w( k. P  b: f0 v6 {
    title('无噪声条件下解调信号的时域图');
    4 o- \- r8 T6 `. z, n  k%*****************************************- k  x: i; s! A+ {6 [& i
    disp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
    ) H( ?' k9 b8 |) j! P9 kpause/ Y9 j' R- _- }* G% Y0 Y
    %**************figure(4)******************
    1 J( @; p0 t! ]2 Z8 `figure(4)% T) A* E$ G  B+ k
    subplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图
    3 ]9 E" D3 B0 y; \. F2 a. b( rxlabel('时间t');, V' {: F$ }8 e5 T+ E
    title('调制信号的时域图');) u- P5 ^  r0 V: b$ z* i
    db1=am^2/(2*(10^(sn1/10)));                   %计算对应的小信噪比高斯白躁声的方差+ z0 {8 F8 a% o5 e+ N
    n1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声. z% f% {* J% s
    nsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通
    ! Y  t7 w4 j( i# u9 |# P2 `%                      %过信道传输)2 T& ]" g3 m1 L4 B% S  S* Q' e
    for i=1:length(t)-1                            %接受信号通过微分器处理/ A5 Q2 P9 |+ v' T/ p1 G/ m
        diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;% z+ h9 m' D+ T/ ?' b/ s* K" T
    end
    9 }/ Z. K3 _( V" W; zdiff_nsfmn1 = abs(hilbert(diff_nsfm1));   %hilbert变换,求绝对值得到瞬时幅度(包络检波)4 @  d" Y# B$ B) E
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;0 v9 \% S! ~5 D, K$ _& z2 k5 `
    diff_nsfmn1=diff_nsfmn1-zero;/ }0 Q  S9 \$ g5 V7 |( E% j
    subplot(3,1,2);
    ! X8 j* F' |3 X! yplot(1:length(diff_nsfm),diff_nsfm);      %绘制含小信噪比高斯白噪声已调信号的时域图+ N# E6 E. W# v% D
    xlabel('时间t');
    7 Y+ y8 F& H0 i% k+ B' G' R  @" A4 Vtitle('含小信噪比高斯白噪声已调信号的时域图');
    ' X# x1 t1 {$ R$ c# n1 asubplot(3,1,3);                        %绘制含小信噪比高斯白噪声解调信号的时域图
    / }  T. M: g+ N5 u2 D8 l/ o" T! splot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');5 C3 R3 E/ [/ J4 \. u
    xlabel('时间t');                          
    ( t% Z9 ^; S) b8 m2 A& Ctitle('含小信噪比高斯白噪声解调信号的时域图');1 a) y4 S/ g; t5 m
    %*****************************************" Z4 f9 \* q1 _+ r$ {, Q' u
    disp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
    / C6 q) |- ]0 e9 ~7 Wpause2 {: z  W7 {- W5 P: j# R8 ^$ Q3 P
    %**************figure(5)******************
    8 Q* a* J% B6 r6 p1 r9 N8 Q4 B" wfigure(5)3 X& P: [5 |) c/ e' B
    subplot(3,1,1);plot(t,mt);                                   %绘制调制信号的时域图
    % C, _! k7 M1 {; Z9 Fxlabel('时间t');
    5 e* h; c( \. E3 R" ktitle('调制信号的时域图');
    3 s6 q0 U- K9 \7 @db1=am^2/(2*(10^(sn2/10)));                   %计算对应的大信噪比高斯白躁声的方差2 O. s3 e+ ]/ H8 b! g0 u
    n1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声) o( b/ U3 y& c/ f& c: b- ?6 e  E( f
    nsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通过信道传输)
    + F* t2 \1 c; y. Vfor i=1:length(t)-1                             %接受信号通过微分器处理6 ^0 b& }* N: {
        diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;' E9 _3 B5 Y: Y9 }2 K# m4 w: O, m5 O
    end( P/ ^& J4 V& p' U
    diff_nsfmn1 = abs(hilbert(diff_nsfm1));            %hilbert变换,求绝对值得到瞬时幅度(包9 H7 X) B6 J- R  B& v5 G% F
    %                      %络检波)  A/ h+ r" _3 o: v* W3 S& I
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    - [" X" O: v9 m2 t. p* Idiff_nsfmn1=diff_nsfmn1-zero;3 E  R, u6 F& Q4 o% X
    subplot(3,1,2);+ N/ Z, i) D( y0 l
    plot(1:length(diff_nsfm1),diff_nsfm1);             %绘制含大信噪比高斯白噪声已调信号
    6 g* Y  R* E( n%                      %的时域图
    6 r, R# j% G: b, M. yxlabel('时间t');0 i* Z- u0 a8 |7 w5 P( w) p+ b8 O7 x
    title('含大信噪比高斯白噪声已调信号的时域图');
    / o7 ^1 n0 f: P) z8 Esubplot(3,1,3);                                %绘制含大信噪比高斯白噪声解调信号; \3 N- a8 h; ]8 i, J1 ]
    %                      %的时域图( e( R. d) j9 a; H. K$ V
    plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
    ) G* ^: t. y) t: x1 Nxlabel('时间t');                           
    ( Z/ s2 q7 q- Ltitle('含大信噪比高斯白噪声解调信号的时域图');
    % u9 h3 l  `% y- X%*****************************************  c6 G- K3 c3 {$ W. o9 d. ^# E
    %******************结 束*******************: M: s; ~7 ?9 G2 Z/ w
    : Y! i) z0 B' \4 s* W

    5 @1 K4 S! x8 n1 l5 [" A* g
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    李秋锐        

    14

    主题

    14

    听众

    76

    积分

    升级  74.74%

  • TA的每日心情
    奋斗
    2015-3-29 18:44
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    社区QQ达人


    ' G( h5 F! I, e' n6 X* h, c6 v2 a0 V7 b! W% D. c: ]

    + }4 I) W5 ^+ L5 |。。。。。。。。。。。。。。。
    # B' v- }2 s* p& D+ @8 A
    / H" F/ G4 |3 b( o! w5 F7 c$ R
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-7-10 07:32 , Processed in 0.665041 second(s), 59 queries .

    回顶部