QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2131|回复: 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$ m  _+ Y5 \: X- a4 q
    %频率调制与解调的Matlab演示源程序7 H$ O+ N+ k1 _5 t+ u
    %可以任意改原调制信号函数m(t)
    $ B' v# |2 u: ?! x4 Y) n% p) S%电子信息工程  杜怀超 091308305  
    ) c+ M/ P2 c4 q/ |) v  C%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    3 w) l0 f: M) i2 c3 g8 Q3 x%*****************初始化******************
    2 @4 h$ h( ^4 Cecho   off       0 q* v: Q- b4 N/ L& ^7 N! e
    close  all9 ^* ?  s6 o+ ^3 k- `" m) C9 V6 }
    clear  all
    / P1 k% a9 X- L3 R0 Iclc
    + q8 R# @2 R/ t$ [4 E, c* }%*****************************************
    $ H6 h: L  s7 ]) j3 B%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    ) q1 \4 O$ G; {. Q1 l* |! E%****************FM调制*******************
    2 g! t- G& V0 g; Odt=0.001;                                   %设定时间步长( n3 ?- R4 ~2 E
    t=0:dt:1.5;                                       %产生时间向量5 t/ Z! {! j! j$ E
    am=5;                                      %设定调制信号幅度
    $ h' g- K( t8 ~" |' l5 V3 cfm=5;                                      %设定调制信号频率
    3 |( t, u4 e; t0 Amt=am*cos(2*pi*fm*t);                        %生成调制信号, |' J# M" e3 K
    fc=50;                                      %设定载波频率- F& t% j: W$ R0 Q' J2 D9 p! S
    ct=cos(2*pi*fc*t);                             %生成载波; c; Z; g5 G# J" w7 Q
    kf=10;                                      %设定调频指数8 L+ r3 k6 R( i4 d+ J
    int_mt(1)=0;. f7 Z: Q0 x& W3 T  X1 M* Y: V) ^. ]
    for i=1:length(t)-1  2 f4 T( v1 X) [
        int_mt(i+1)=int_mt(i)+mt(i)*dt;               %求信号m(t)的积分/ S' B( ?2 c( G) l7 B
    end                                          %调制,产生已调信号' Q0 f  |5 b/ w8 e9 b3 c6 k
    sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt);            %调制信号
    ' I$ i( W2 x6 r% x. N$ Q%*****************************************( s% m, Y7 a1 p& i1 X
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·$ O- c: p+ x# e+ |; {+ x: ~
    %*************添加高斯白噪声**************1 M. a$ c: r$ Z6 X% p' }
    sn1=10;                                     %设定信躁比(小信噪比)8 x! [. u6 \& g; _1 e) S
    sn2=30;                                     %设定信躁比(大信噪比)
    $ M- H. N' L% D9 e/ J# e! F1 R% [sn=0;                                       %设定信躁比(无信噪比)- K. h$ I& w( `5 c, b9 ]4 d+ O
    db=am^2/(2*(10^(sn/10)));                     %计算对应的高斯白躁声的方差
    3 z0 _6 |- Z- Z( ~0 `6 Mn=sqrt(db)*randn(size(t));                      %生成高斯白躁声, i; r' n8 m! ?4 ~% s4 J
    nsfm=n+sfm;                                %生成含高斯白躁声的已调信号(信号通  |5 _* i+ j. r* D1 k* _- g
    %过信道传输)
    2 ?' O" B+ b; R+ [%*****************************************3 l9 A/ m; F2 ?5 Q4 [9 U$ k4 t4 z
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    % I, e5 A$ s' \; e" J% B/ e. |%****************FM解调*******************
    ; A; z* z, Y$ ~5 {1 T* E# `! a3 \- q- rfor i=1:length(t)-1                             %接受信号通过微分器处理, ?5 k1 F& ]: \: [% W5 ?, C
        diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
    8 U3 n" ~& Y& c1 x/ [3 jend9 ?2 X" b# {4 C7 z0 H( y8 n6 T( w
    diff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)
    0 P0 ^' F* ^8 @3 ezero=(max(diff_nsfmn)-min(diff_nsfmn))/2;3 U4 G- c4 _) ^1 D$ b
    diff_nsfmn1=diff_nsfmn-zero;0 g/ U2 F; R( A  ?' r+ h& V5 A
    %*****************************************
    & {+ E. K( m, W$ T& [%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    $ P4 w3 J3 y/ ~9 F7 e%**************时域到频域转换**************
    . a, v9 G2 [5 I+ Rts=0.001;                                    %抽样间隔
    / @( x/ f. H8 ]! w/ m! h" `( Gfs=1/ts;                                      %抽样频率
    $ i7 _6 O& q, P9 N! kdf=0.25;                                     %所需的频率分辨率,用在求傅里叶变换" x3 T. u6 s) l5 V6 A
    %                      时,它表示FFT的最小频率间隔1 ^# i. d! W* D4 S
    %*****对调制信号m(t)求傅里叶变换*****
    0 V9 a' I. b8 I  T+ [3 km=am*cos(2*pi*fm*t);                         %原调信号
    , t0 P* N" L4 D) l. q- Ofs=1/ts;
    , c. U0 ~, n5 N* W# h; r% `0 Y& Hif nargin==2
    , g4 Z3 `4 b6 p* z) w    n1=0;
    1 e3 x$ D7 a, S' |8 ]: O4 kelse% A5 Y) a% Z+ F, `4 A% B
        n1=fs/df;
    ( V" Z) r3 a! E! ?( `end
    $ P$ u, \% |2 y# |& Hn2=length(m);: n5 B5 ?" {( j( U" T9 N3 F# a) R. M
    n=2^(max(nextpow2(n1),nextpow2(n2)));
    5 V1 m5 R% P! p1 ?M=fft(m,n);
    6 K) Z# x0 z5 A# V9 _1 |m=[m,zeros(1,n-n2)];
    * n& Z3 S3 X, T& |# s! Qdf1=fs/n;                                   %以上程序是对调制后的信号u求傅里变换
    9 N. g; @- Y' X8 f! t' T1 y' qM=M/fs;                                   %缩放,便于在频铺图上整体观察3 t$ O4 a! e$ ^! T
    f=[0:df1:df1*(length(m)-1)]-fs/2;                %时间向量对应的频率向量; P8 j6 F( f3 Y. R8 B5 v% @
    6 z4 @1 ^0 Q& c, g: S/ ?
    %************对已调信号u求傅里变换**********- f. e7 A' |, P! _) }  ?
    fs=1/ts;
    * f$ ]8 N7 O5 n6 A- kif nargin==2, `/ X3 z3 m, j. W8 o+ |
        n1=0;
    0 i7 i* |7 Z, v2 t+ T/ Q4 Melse: |) m7 y. e6 L5 N
        n1=fs/df;, p' l/ d" O& C. z2 d
    end
    - H; I$ M* E) x* V3 @% k* S# `n2=length(sfm);2 F( [0 I! g2 W
    n=2^(max(nextpow2(n1),nextpow2(n2)));" Y. L" H7 B* g7 X6 u, h
    U=fft(sfm,n);: A- c0 h" O; x* r" h& g
    u=[sfm,zeros(1,n-n2)];& F$ z5 i  `/ Z5 s3 ]: R) r9 f; `
    df1=fs/n;                                   %以上是对已调信号u求傅里变换
    $ [% Q( E6 M! E  J# ]0 {* X4 [. tU=U/fs;                                    %缩放' j1 y1 t0 Y8 k5 y6 t
    %******************************************/ g" C; h: }( w. I" `
    %*****************************************
    8 Q6 n9 F: I3 n: {+ W- h9 f4 U- E%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·1 }& L! v! s7 \
    %***************显示程序******************6 S. g7 c+ E$ t4 D0 O# i, k
    disp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')' ~- G, P$ ~& C  q  D/ u. e# B
    pause
    + Q5 a, L  O- C8 N4 G0 O%**************figure(1)******************
    + R1 X0 j- J# g" \% h# ~% _5 R" @/ [figure(1)
    3 P& V; n0 l& \4 Q' gsubplot(3,1,1);plot(t,mt);                                 %绘制调制信号的时域图
    ( c  Q) x, v, ~0 @' ixlabel('时间t');0 ?+ h6 S# `/ l+ |1 N* A, `
    title('调制信号的时域图');
    % |* w% `4 n8 P% c+ O- {5 i% ^+ rsubplot(3,1,2);plot(t,ct);                               %绘制载波的时域图7 g" b& K# o* O
    xlabel('时间t');
    ) z3 K7 L4 i1 q6 o+ {5 b% Y( S, |# [title('载波的时域图');
    4 P8 a* Y: H: z# _3 o& K% }5 F. Usubplot(3,1,3);
    & L% f- s0 [/ ?4 q+ j9 ?6 i8 s) Xplot(t,sfm);                                                  %绘制已调信号的时域图. f, V0 y% C: w
    xlabel('时间t');
    2 S) t' C3 S+ |; \title('已调信号的时域图');# F$ ?9 P5 h+ g% G& ?. t
    %******************************************/ E, ]( K) }  A$ g
    disp('按任意键可以看到原调制信号和已调信号在频域内的图形')$ v% V0 A- i; Q/ X
    pause5 r4 H/ e9 x9 U/ Q4 e
    %************figure(2)*********************" c, m7 D2 d2 n9 M4 j8 c
    figure(2)
    $ g) @5 E2 W5 r8 P" D( |/ S* Q+ _6 h% \subplot(2,1,1)
    9 \; J; k+ K$ b! |. s- r& D6 f  l  Nplot(f,abs(fftshift(M)))                        %fftshift:将FFT中的DC分量移到频谱中心
    5 C: v& g- a! U; j2 Mxlabel('频率f')( j1 ]  \6 e& Y) O
    title('原调制信号的频谱图')& A2 e) E' `8 q& m, E! V3 S0 ?8 A) Z
    subplot(2,1,2)
    + L% o& N6 _$ T, o0 tplot(f,abs(fftshift(U)))$ ^( E$ z+ ]; j9 d
    xlabel('频率f')5 r: e( J2 G2 n" g' N/ i
    title('已调信号的频谱图')' J' J" Q$ I' B3 i- Z8 f2 s
    %******************************************
    + b8 |9 ^5 U2 Z& ^% Adisp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')& Y+ z* J3 @$ h9 L! ?
    pause
    5 O: x. ?* g; _+ c4 ?+ E, [- _- X%**************figure(3)******************9 j- ?* |! d' f6 I# h" z
    figure(3)! B4 E  Q0 v- [9 h* f4 c  i
    subplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图
    0 \" Z2 }; V. L% f2 O; L% \/ |xlabel('时间t');+ H0 r8 K* o" x
    title('调制信号的时域图');
    1 I9 ?* b# E! P) `9 M1 O. i: usubplot(3,1,2);plot(t,sfm);                              %绘制已调信号的时域图
    , P# h6 p2 N! u, }xlabel('时间t');4 w+ }) F+ @: S; J
    title('无噪声条件下已调信号的时域图');
    ( s7 j# B6 k8 Y, R' m& _nsfm=sfm;                              3 t) y* Z2 n2 t" S
    for i=1:length(t)-1                           %接受信号通过微分器处理, R% v% M% S: F$ j: p! m
        diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;- V- k5 X" _4 u) ]
    end0 l# F) W  D, \5 d
    diff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)
    % _0 P* o: j6 [8 |zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    1 M+ x% r, j) X/ e  b/ p7 bdiff_nsfmn1=diff_nsfmn-zero;6 I% `' `3 J4 M. z( I) X+ x
    subplot(3,1,3);                             %绘制无噪声条件下解调信号的时域图
    0 T# p. B" O7 B& X9 T8 {plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');; x* E  q  \1 l3 c% X1 F; J$ h
    xlabel('时间t');                          1 R8 V/ l4 _0 i8 P& }
    title('无噪声条件下解调信号的时域图');/ F  H3 M' S7 W7 q  R3 ?
    %*****************************************( S; X' U! q5 g9 S* P" c
    disp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
    6 {& Y+ I# o# Q/ Spause0 C  z0 r8 O$ m7 c0 C6 _
    %**************figure(4)******************, I: @$ U' k- G% D
    figure(4)1 r) r' r0 f/ U& l
    subplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图
    ! {" y6 X) S: V* u" `/ Hxlabel('时间t');
    # i$ ]2 s. H! D) C0 L+ L' r# M) Ctitle('调制信号的时域图');$ U- K& L* q! _7 n5 G! G
    db1=am^2/(2*(10^(sn1/10)));                   %计算对应的小信噪比高斯白躁声的方差  v4 \4 F3 v& O! K$ F+ m' J, H
    n1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声
    & n8 B% H3 h& P' S) n! Insfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通2 E  \% _7 M5 u8 {
    %                      %过信道传输)
    4 w' _, s( W- m) T8 }for i=1:length(t)-1                            %接受信号通过微分器处理
    6 S, s: r, I2 G% }/ v- d0 E) E    diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;, Q6 M4 D$ r7 ]+ S2 W) c$ l
    end, N7 C& h/ C4 j1 S( Q6 W9 ^
    diff_nsfmn1 = abs(hilbert(diff_nsfm1));   %hilbert变换,求绝对值得到瞬时幅度(包络检波)
    ( c# W% g# y% T# B- V+ G; Izero=(max(diff_nsfmn)-min(diff_nsfmn))/2;) t2 Y) x: `  k% P0 `2 R: s
    diff_nsfmn1=diff_nsfmn1-zero;
    5 Z, ]" o3 E' Tsubplot(3,1,2);
    9 G; D/ N. b9 C6 }, i) Y3 |/ B: Vplot(1:length(diff_nsfm),diff_nsfm);      %绘制含小信噪比高斯白噪声已调信号的时域图& G" I; S2 s7 e3 ^+ z8 ~
    xlabel('时间t');
    " w8 o* O: B9 C6 atitle('含小信噪比高斯白噪声已调信号的时域图');
    3 ^6 \7 V: j/ C9 ^* b7 a" R3 q. isubplot(3,1,3);                        %绘制含小信噪比高斯白噪声解调信号的时域图) ^) i( e& ^# t% u# F. s
    plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
    9 M. v5 N" p  }9 F3 Jxlabel('时间t');                          
    ) n! E1 H9 B' H3 R+ Dtitle('含小信噪比高斯白噪声解调信号的时域图');
    3 W9 D' w  b& R  B3 ~: }0 P- B# K%*****************************************) r' t9 D  u6 N/ a
    disp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')/ P( @; P9 V( x7 G  P
    pause+ @& D2 w! s7 {) d& a
    %**************figure(5)******************
    ; \* `0 v2 @# ?figure(5)
    8 A9 D5 e% V. F" |' y/ Wsubplot(3,1,1);plot(t,mt);                                   %绘制调制信号的时域图
    4 z$ A5 Z- Z$ M7 m' d' b+ s# T- mxlabel('时间t');& }8 _. J( R/ B7 [. t5 ~/ W
    title('调制信号的时域图');
    * |" `' h0 {+ T" x# N2 @: [db1=am^2/(2*(10^(sn2/10)));                   %计算对应的大信噪比高斯白躁声的方差
    + s1 ^# n6 e- L$ i# _+ T8 [3 Sn1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声7 S/ D5 U( o5 T1 x9 W) q
    nsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通过信道传输)( `# a/ ~4 ]1 z9 X; ~9 P
    for i=1:length(t)-1                             %接受信号通过微分器处理
    * d7 D) [$ I9 l8 O6 e    diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
    ( c2 W3 Q( z- E1 i# Dend+ P0 P4 D$ w/ }  Y, y8 g
    diff_nsfmn1 = abs(hilbert(diff_nsfm1));            %hilbert变换,求绝对值得到瞬时幅度(包
    6 k7 S0 C. g$ Y/ F1 ]%                      %络检波)# \) \, C0 A' F' @, s
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    7 S1 x0 }# [: R0 Cdiff_nsfmn1=diff_nsfmn1-zero;/ b  p/ p! F( }1 ~" F
    subplot(3,1,2);6 ]" Z- g$ a6 }/ t( `
    plot(1:length(diff_nsfm1),diff_nsfm1);             %绘制含大信噪比高斯白噪声已调信号" `& G4 L6 S& {- t4 h
    %                      %的时域图
    / W4 r$ @  ~1 S& K6 z6 ~- Hxlabel('时间t');
    4 Q& x9 O) N* P9 [+ W& Ktitle('含大信噪比高斯白噪声已调信号的时域图');0 J* `/ l! _/ s
    subplot(3,1,3);                                %绘制含大信噪比高斯白噪声解调信号8 O1 l7 r4 b0 G
    %                      %的时域图
    7 ^# U8 c# }4 D5 K8 Vplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');5 _4 d" ^9 g5 z& P7 n$ H
    xlabel('时间t');                            # ]- }! B0 z, u6 q, A. u1 a' j
    title('含大信噪比高斯白噪声解调信号的时域图');
    + Z9 ]9 v3 Y! q/ l- k%*****************************************
    - X7 v+ J- F/ |%******************结 束*******************
    ) g! e: m( u5 K2 B
    1 g4 ^7 f8 v6 e1 J
      x- e5 J9 ^0 b3 T
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    李秋锐        

    14

    主题

    14

    听众

    76

    积分

    升级  74.74%

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

    [LV.4]偶尔看看III

    社区QQ达人


    / a; D8 \+ r6 G' ^% v" P  |' B2 ?* r. F: q3 e# P* b" ~, L! i7 a
    ) M1 u/ L3 s: W+ F' i( ^: k
    。。。。。。。。。。。。。。。
    ! v2 i4 g8 I/ W; G
    & ~6 e* o5 A5 H8 f; q) z
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-6-14 22:32 , Processed in 0.326626 second(s), 59 queries .

    回顶部