QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 1958|回复: 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
    : ^' O. }0 V+ _9 F- k% P! J1 G%频率调制与解调的Matlab演示源程序
    - a* H# K6 j" O; Z: z5 J%可以任意改原调制信号函数m(t)
    , \$ U/ z5 R/ V/ g9 O%电子信息工程  杜怀超 091308305  
    ) Z5 S4 O) a% m  G! v%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    % V$ M7 g0 u( E%*****************初始化******************
    5 `9 \: [6 v$ G8 N" i7 ?, ^6 {echo   off       9 I. S( n0 D: m9 E3 v' n
    close  all
    # Y2 r6 t0 o) H9 _7 sclear  all
    7 D, c$ W* O3 @8 S* ^: l. eclc4 l- m+ w. D0 r+ }( i+ z1 f/ m. }
    %*****************************************
    : C8 U' u8 _" ], Z: P+ t" C%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    6 {7 P3 k% l' W; N& t3 L%****************FM调制*******************
    7 x% C( T2 T( h" [3 S/ m" Bdt=0.001;                                   %设定时间步长
      b5 _; n. ]* {/ O3 I7 ot=0:dt:1.5;                                       %产生时间向量
    ; H/ Q& i1 l0 |  {0 R6 S. M: bam=5;                                      %设定调制信号幅度
    % A, z. S) `( n# nfm=5;                                      %设定调制信号频率
    + ?# w- h$ D+ S$ U% j5 i* Gmt=am*cos(2*pi*fm*t);                        %生成调制信号
    : q+ w$ o- ]6 |( ?; kfc=50;                                      %设定载波频率& I: @+ ?4 U& M( g3 V% g
    ct=cos(2*pi*fc*t);                             %生成载波
    1 a# b& L9 N, _4 z' G  Ukf=10;                                      %设定调频指数: S4 B9 l  H7 F* u8 C
    int_mt(1)=0;
    3 I9 R* V& D6 ]8 ]/ o! @0 |* Wfor i=1:length(t)-1  , C) R( Q; P* s9 @+ ]
        int_mt(i+1)=int_mt(i)+mt(i)*dt;               %求信号m(t)的积分) m- @  L) `& H
    end                                          %调制,产生已调信号) T( v$ j6 m# i: J7 S+ E8 X
    sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt);            %调制信号, T+ O3 E* }$ i. z  T$ \% l
    %*****************************************
    + C8 Q% Q$ B& f* _% P+ V1 d/ m2 s: N( h%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    3 D. [5 l* i# W, C1 y( T7 ^: j: L/ P$ h%*************添加高斯白噪声**************
    ) x. a6 @! d# ]0 I- }% usn1=10;                                     %设定信躁比(小信噪比)
    3 |/ @- i! O1 I7 f$ P8 \sn2=30;                                     %设定信躁比(大信噪比)
    ( ~5 Q6 z- A+ T; v, o8 j" _sn=0;                                       %设定信躁比(无信噪比)
    . d' Y$ W* }5 vdb=am^2/(2*(10^(sn/10)));                     %计算对应的高斯白躁声的方差3 @, F) \1 Y- b5 k
    n=sqrt(db)*randn(size(t));                      %生成高斯白躁声
    $ c; J2 S8 k5 j8 O' `, \6 hnsfm=n+sfm;                                %生成含高斯白躁声的已调信号(信号通
    # Q7 r( u4 `/ I, p%过信道传输)
    6 h- P! T, d. ^5 y%*****************************************& f4 e, W1 P+ y" P, h) K6 T+ N
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
      ]; V- H5 ^+ _  ]- r; m& q% q# C%****************FM解调*******************4 ]' F: h8 I+ M7 t
    for i=1:length(t)-1                             %接受信号通过微分器处理1 D/ o0 y8 d6 m
        diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;. h: q1 c4 {7 M4 g
    end0 y& T* I, {  y6 {1 Z, p% S
    diff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)
    , J# R& ?' M7 O. v7 V% ^zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    , i0 c7 X8 I  T6 |$ Hdiff_nsfmn1=diff_nsfmn-zero;
    ' W# p/ K0 H# m+ R; y* M3 u3 `%*****************************************. j" a2 m8 R* i4 `  b
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·1 x3 I  |4 y, z, |# @
    %**************时域到频域转换**************
    & v  [& ~  s* v" E& T) uts=0.001;                                    %抽样间隔
    $ i& }& Z# j' J4 _7 ~/ Ofs=1/ts;                                      %抽样频率6 _$ H# Y, ?+ m# E
    df=0.25;                                     %所需的频率分辨率,用在求傅里叶变换+ l. O! u' }: J8 s6 y' I
    %                      时,它表示FFT的最小频率间隔
    8 W5 Z( P: i" M8 d% x%*****对调制信号m(t)求傅里叶变换*****. l9 p1 i$ @: C( `
    m=am*cos(2*pi*fm*t);                         %原调信号
    # N0 B1 Y" s# U8 f  y, qfs=1/ts;
    0 j9 e8 C! o- z3 I0 T: Bif nargin==2! N8 j8 W, g7 r) W
        n1=0;# D. g: I# N0 b, m7 g! w1 Y5 G
    else
    % P  Y: @8 S( r/ |) v0 X% m    n1=fs/df;1 G7 L6 I( G5 L8 V
    end
    2 Z. |% r" h4 q$ \% Kn2=length(m);+ j* p# R6 R% R' O% `. C
    n=2^(max(nextpow2(n1),nextpow2(n2)));8 m/ M* E, }7 Z- O! [* b3 ^
    M=fft(m,n);
    * r' s/ o3 y, k4 r2 `( X- Am=[m,zeros(1,n-n2)];
    ) i4 X8 t4 r4 rdf1=fs/n;                                   %以上程序是对调制后的信号u求傅里变换" ~  l6 D4 F7 O" T
    M=M/fs;                                   %缩放,便于在频铺图上整体观察5 J( f, s% F1 o$ Z. h# j( Q' v
    f=[0:df1:df1*(length(m)-1)]-fs/2;                %时间向量对应的频率向量
    1 F9 [/ l- N! N
    9 t' A3 n5 _7 m! }4 f%************对已调信号u求傅里变换**********
    ! w$ i4 f% q" t5 J0 T7 Ofs=1/ts;
    . ~" a! e3 c9 U6 A7 C$ E- bif nargin==2, k4 v9 {! y9 q; a0 o5 I# b
        n1=0;; `2 Y' o  m5 r& p5 a$ Z8 n, j/ r
    else2 n9 P2 N/ }& d! \9 f
        n1=fs/df;
    3 `3 D$ L7 h0 E9 u2 a8 fend9 ?% e: U: x, F) Q) S
    n2=length(sfm);- H/ y8 c3 F5 {- h
    n=2^(max(nextpow2(n1),nextpow2(n2)));4 V% T8 @4 e) P& v& ^, l
    U=fft(sfm,n);
    ) E0 w$ k  v, Y" U9 o  zu=[sfm,zeros(1,n-n2)];! c: ~- F7 K1 l5 Z. d
    df1=fs/n;                                   %以上是对已调信号u求傅里变换( A& C/ m! A$ P1 k! i2 e( r) c
    U=U/fs;                                    %缩放
    ! k/ l8 q/ [' H+ o%******************************************2 L* K: o: ]1 A
    %*****************************************
    , r' P8 R* U, [" A- K# V%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·9 t9 B' A6 s6 s: I
    %***************显示程序******************! d2 M! Y8 |* h  o
    disp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')
    - W2 g! D+ z$ v' vpause3 R: e6 n1 b( M5 R, P+ `
    %**************figure(1)******************, j. P1 b4 I3 {2 W) s  |
    figure(1)
    6 f6 O( k& S# Ssubplot(3,1,1);plot(t,mt);                                 %绘制调制信号的时域图
    0 j) Z/ o( Q2 k+ E0 Jxlabel('时间t');  S- v6 }: _1 Z# b
    title('调制信号的时域图');; Q, I" ]. d1 w8 r- E
    subplot(3,1,2);plot(t,ct);                               %绘制载波的时域图
    ; A' s4 A/ {6 U7 P6 axlabel('时间t');0 `. N; P/ S% O0 r+ ]
    title('载波的时域图');# ~, U$ x# w' P0 o& T
    subplot(3,1,3);
    ! O  r: n& D9 j! `) \% V  \% L0 Tplot(t,sfm);                                                  %绘制已调信号的时域图
    : H" G6 [$ `+ u$ x# }5 d1 R( K- [: pxlabel('时间t');! L6 j* C! b/ C
    title('已调信号的时域图');
    - {4 [% g" f3 _  p% h8 G%******************************************# X& l. Z) e* P, d3 X+ A
    disp('按任意键可以看到原调制信号和已调信号在频域内的图形')
    6 t8 i7 ?9 V8 E: _& e" Kpause
    5 w8 P; W* Z# ]& g: j& x9 z%************figure(2)*********************+ l  {, {, }$ o% p7 l8 {- n
    figure(2)- e  S- b1 C  M* Y
    subplot(2,1,1)7 O* a9 D5 V6 X( |
    plot(f,abs(fftshift(M)))                        %fftshift:将FFT中的DC分量移到频谱中心* \8 D0 s3 A8 t4 v8 Y6 w
    xlabel('频率f')
    $ g0 `5 [5 i& ^) a8 Dtitle('原调制信号的频谱图')
    $ G0 y& ~6 f2 H% Q1 m4 t7 esubplot(2,1,2)6 w+ R9 w+ g. X' n
    plot(f,abs(fftshift(U)))
      y) H; b; z) g* h2 i  Kxlabel('频率f')5 ]$ H5 j( N' ]- w
    title('已调信号的频谱图')6 N3 x/ s8 v/ X% F
    %******************************************
    ) N; I2 ^' X, f. ]7 v% t, s7 c6 |disp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')" d0 z; d, x1 o5 s8 c
    pause
    5 ?' H" }7 O3 k" _5 F%**************figure(3)******************# w+ i) w! Z% J! j7 x: q
    figure(3)
    ! D+ t' s+ B; }subplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图  ?6 J5 L* q# C
    xlabel('时间t');, e  O* V5 D( X2 S) Y
    title('调制信号的时域图');
    0 d$ E8 W: e2 p# q2 {subplot(3,1,2);plot(t,sfm);                              %绘制已调信号的时域图7 b3 p% n& b! @/ q' i; ?
    xlabel('时间t');4 R# n9 n( b/ g
    title('无噪声条件下已调信号的时域图');
    7 T- r! O9 L) T+ t9 p6 Wnsfm=sfm;                              
    . Y4 y$ F& N  D; n- H* o+ T; |for i=1:length(t)-1                           %接受信号通过微分器处理/ Z& Z( g' N  O  w- U/ u5 C* ]
        diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;1 c, M9 n9 c: u! a$ W; o* U
    end
    + |/ Q' }  E- ^( Y1 A# l4 cdiff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)& ]+ M5 _1 g8 W1 a
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;( |2 h" ]6 n# @
    diff_nsfmn1=diff_nsfmn-zero;
    % O/ @/ ?& _4 @1 _$ \8 O, L; hsubplot(3,1,3);                             %绘制无噪声条件下解调信号的时域图
    % l( x/ K( @1 Q2 Aplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');) E2 M8 a' }& @* l. B: Q
    xlabel('时间t');                          - ^5 B3 Y! E, m8 i+ S+ e3 W
    title('无噪声条件下解调信号的时域图');( V3 ]$ Y  n' G9 F# k
    %*****************************************
    : r6 [: J8 o, m% ldisp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
    6 m) P  u& H, b. a9 ]3 opause3 f/ I2 z( y9 K" D3 N
    %**************figure(4)******************" L  o; p" a, D0 l
    figure(4)# O  r( j" a2 a
    subplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图+ [# c# t+ j4 t* F
    xlabel('时间t');$ D. B  J4 @1 k1 r  k) z0 k5 x
    title('调制信号的时域图');2 t0 Z) Y) m3 |1 p1 B2 Z8 z7 c
    db1=am^2/(2*(10^(sn1/10)));                   %计算对应的小信噪比高斯白躁声的方差
    ( g( m1 a- n3 U% V! v* U- hn1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声
      I0 D6 c% c' C3 |nsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通
    % I- M! i8 L) {2 a- x%                      %过信道传输)
    ! |0 o* q8 U% [; U* y, h- K3 |/ K2 Tfor i=1:length(t)-1                            %接受信号通过微分器处理# G% g( V. s# ~
        diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
    ' e: d0 g/ g9 yend
    2 h7 ^% @6 e, t( c; Idiff_nsfmn1 = abs(hilbert(diff_nsfm1));   %hilbert变换,求绝对值得到瞬时幅度(包络检波)
    ( B+ `" P; j$ q7 izero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    6 P( \! Q2 _  W  w3 O4 Ydiff_nsfmn1=diff_nsfmn1-zero;
    / @, t+ Y5 j4 q/ K% p+ asubplot(3,1,2);( @- J) Y* f0 c1 [3 T# ]- g
    plot(1:length(diff_nsfm),diff_nsfm);      %绘制含小信噪比高斯白噪声已调信号的时域图
    ' x9 O! U/ a. T8 q2 d& m: `xlabel('时间t');: A2 e% g" C7 f; C* F1 k0 B; ]
    title('含小信噪比高斯白噪声已调信号的时域图');/ [, Y# W$ o8 t: K& E, b4 M! k
    subplot(3,1,3);                        %绘制含小信噪比高斯白噪声解调信号的时域图4 o7 [8 D, @  K% P8 G
    plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
    - s  ]0 j/ B/ t& G5 `xlabel('时间t');                          
    ( L% s+ G5 J/ h% x+ {title('含小信噪比高斯白噪声解调信号的时域图');
    / Y' [5 |  P# A! H%*****************************************
    3 ]* |% M8 O2 ?- L* _disp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')' |' I, X# v* G2 d9 t  w% h
    pause3 t) T4 d: J! d0 \
    %**************figure(5)******************0 ^5 W# Q. a, K! Y5 W* Y  p
    figure(5), |" O+ j: Q' k# H, N
    subplot(3,1,1);plot(t,mt);                                   %绘制调制信号的时域图
    7 N# ~5 a& B/ \+ q: Jxlabel('时间t');
    . T  O8 r$ b$ X- j7 v6 Ptitle('调制信号的时域图');
    # e* \, O5 n* g  u% L' s! ^9 Rdb1=am^2/(2*(10^(sn2/10)));                   %计算对应的大信噪比高斯白躁声的方差
    7 b8 D0 h/ |  }1 pn1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声
    ; n7 h; L% F' y, d3 |  p( @+ N4 X+ v3 tnsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通过信道传输)2 U$ y7 s0 q! t4 E0 i7 H( k
    for i=1:length(t)-1                             %接受信号通过微分器处理
    + o' S! a/ e5 Y! w2 W7 y    diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
    + g' ^5 F7 D$ `end% j& U3 N. D2 J7 C0 @2 E
    diff_nsfmn1 = abs(hilbert(diff_nsfm1));            %hilbert变换,求绝对值得到瞬时幅度(包& ~0 Z; o) [2 [) c
    %                      %络检波)8 P+ {, Y$ k) ]% T# T
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    . {4 y3 V$ F& ~3 R# ldiff_nsfmn1=diff_nsfmn1-zero;( t% O$ k, X6 B0 ^$ O9 v$ Y
    subplot(3,1,2);  V' y7 _! J& J8 q; E& G: t8 p
    plot(1:length(diff_nsfm1),diff_nsfm1);             %绘制含大信噪比高斯白噪声已调信号* y' t7 M, O" ]* L. T+ I6 m
    %                      %的时域图
    6 V+ ~8 U, L- p" x' a( @xlabel('时间t');
    - g, Q' j& r) `& j; Y/ @, Ktitle('含大信噪比高斯白噪声已调信号的时域图');3 g2 X) ~! S9 }; _
    subplot(3,1,3);                                %绘制含大信噪比高斯白噪声解调信号% N# s0 f3 g# b# ]
    %                      %的时域图6 l, H5 w& p( i% o$ z0 Q
    plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
    0 t- K' \5 E% _9 o, h) v& j. Rxlabel('时间t');                            . N( R- s2 x- {, K- N6 x
    title('含大信噪比高斯白噪声解调信号的时域图');
    / d0 w6 K3 I0 A+ J! x' R%*****************************************9 v2 c- W: V  {* g3 C$ M
    %******************结 束*******************
    5 G6 ]  o  P$ V; L3 O, q1 \' n

    " L, W, b* p$ e8 z
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    李秋锐        

    14

    主题

    14

    听众

    76

    积分

    升级  74.74%

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

    [LV.4]偶尔看看III

    社区QQ达人


    % Q1 |. r: L4 l/ s$ x9 n# n, }0 x8 R, H* j) P( o- ^4 Q9 V
    * v- M, g& ]: w* ^
    。。。。。。。。。。。。。。。
    ) D) M8 Y  o$ m3 c8 _# d
    # I1 I+ s* E7 J5 c6 c5 c
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2025-8-20 02:48 , Processed in 0.338985 second(s), 58 queries .

    回顶部