QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2134|回复: 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
    7 F9 d; R2 L  m. X/ T% H%频率调制与解调的Matlab演示源程序
    & [+ Y1 H: q3 M! w6 y%可以任意改原调制信号函数m(t)
    9 y, ~# ]0 I# z8 C; ?. N" ^! L%电子信息工程  杜怀超 091308305  
    & ?. K" l. w8 r2 h6 [%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·7 h* ?+ G! l+ v4 n
    %*****************初始化******************/ o4 n1 f7 `: O" g% r  y* A
    echo   off       ' m+ Y1 a% D( j* _8 u! s6 a. i2 L- {/ @
    close  all& ^# b! r$ q5 I3 {* o1 H
    clear  all
    ; o: o! G; E4 O4 Jclc
    ; d1 W9 ]7 `9 y; e! T( `! @$ ?4 v%*****************************************, f, I$ Y0 L6 p( Q- B
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    5 v+ X8 g# x" T0 G# F%****************FM调制*******************8 u4 c5 x( Y5 V1 l- d
    dt=0.001;                                   %设定时间步长& F/ [0 Z* u: Y$ O. c2 ?# ~
    t=0:dt:1.5;                                       %产生时间向量  r" P4 Q% Y4 w5 E" U6 W, [
    am=5;                                      %设定调制信号幅度
    # u) \: d3 Q2 @9 E1 ffm=5;                                      %设定调制信号频率  o" N. H# _0 I" r
    mt=am*cos(2*pi*fm*t);                        %生成调制信号3 P7 E4 i: C: S! c8 g. i
    fc=50;                                      %设定载波频率
    . O( ]$ M' _: l5 Qct=cos(2*pi*fc*t);                             %生成载波9 N" W) c* ~$ m
    kf=10;                                      %设定调频指数2 d' j  C3 L) v# g# y* ]4 C9 e
    int_mt(1)=0;
    6 y6 M7 N0 X# L2 y+ zfor i=1:length(t)-1  8 E1 N4 d4 _" I4 Z
        int_mt(i+1)=int_mt(i)+mt(i)*dt;               %求信号m(t)的积分
    : o* b. }- A4 [6 h5 H- v" Uend                                          %调制,产生已调信号- v# z7 ~3 I: H0 y8 E0 C' y# ~
    sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt);            %调制信号# l8 S1 ^9 o6 [$ L" Z& _
    %*****************************************. c- ~; i  T# B) C. e& b
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·- j+ |! A7 D8 F5 D. [
    %*************添加高斯白噪声**************
    ( A$ ?, h$ S* ?6 Nsn1=10;                                     %设定信躁比(小信噪比)0 t; ]' i% X) b& g* t
    sn2=30;                                     %设定信躁比(大信噪比)
    * N8 y# B7 A6 r$ H8 msn=0;                                       %设定信躁比(无信噪比)
    / T( Q0 K: Z- l2 kdb=am^2/(2*(10^(sn/10)));                     %计算对应的高斯白躁声的方差' h  d3 {* U3 g  _, b
    n=sqrt(db)*randn(size(t));                      %生成高斯白躁声
    0 O* Y' Y' C4 ?/ Z5 g+ J) snsfm=n+sfm;                                %生成含高斯白躁声的已调信号(信号通* ^2 N( ^1 d& G/ y7 z
    %过信道传输), G/ R' b$ @0 y7 q6 Q6 P! w, @
    %*****************************************9 @  M9 }3 s" |3 }. d
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    4 A& I" I& h4 l- S%****************FM解调*******************
    . P% t3 C% M! Y3 F: E: ~for i=1:length(t)-1                             %接受信号通过微分器处理
    1 D+ }9 ], V+ q/ ?    diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;2 Q1 v% }: E, Q3 }8 z; ?% \. V
    end3 ^% d+ J7 P) Y6 @2 z; v
    diff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波); G; J0 p- r+ K& m9 w
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;; |6 p8 f; C7 m) B3 S- C- l
    diff_nsfmn1=diff_nsfmn-zero;) ]) J- e( k& T& o' q, c- A2 B
    %*****************************************1 u8 R8 Y; a- ~2 ?0 G' j) ~
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·9 h" s, q, {7 I2 F) @/ Z
    %**************时域到频域转换**************
    ) `' q/ l: e2 Bts=0.001;                                    %抽样间隔
    ) {# m# ^# O* O( U( }4 l% }fs=1/ts;                                      %抽样频率5 H: z- J0 k8 j! e8 x! ~
    df=0.25;                                     %所需的频率分辨率,用在求傅里叶变换
    1 V8 z5 \% O, `* I! u%                      时,它表示FFT的最小频率间隔
    * a7 b' s4 ^5 _%*****对调制信号m(t)求傅里叶变换*****
    ' W, O4 T& ?  a  j- Nm=am*cos(2*pi*fm*t);                         %原调信号
    ( ^( b1 w9 |- qfs=1/ts;  }1 s1 G! P* g2 w5 j
    if nargin==2. }) l0 _9 |; e9 B
        n1=0;
    7 l9 @: J% r. k3 K! c& \% G  Qelse
      o% G" ^+ c. X3 D& }+ H    n1=fs/df;% c2 P$ d/ r7 w- \" A$ T2 o+ P% b
    end8 R2 y# Y& M; y9 t6 ?  A$ \( B. {
    n2=length(m);' N4 p& A- W8 y) ^, u
    n=2^(max(nextpow2(n1),nextpow2(n2)));1 o4 j, g* g2 ^
    M=fft(m,n);9 @, ]' s7 ?/ I+ H5 Y& D2 z# l
    m=[m,zeros(1,n-n2)];
    # O' n1 g" Q. {0 y2 I" ^df1=fs/n;                                   %以上程序是对调制后的信号u求傅里变换0 M7 d0 H  f8 c" L3 M
    M=M/fs;                                   %缩放,便于在频铺图上整体观察
    6 y+ b8 t, ?: M8 y) s  q  `f=[0:df1:df1*(length(m)-1)]-fs/2;                %时间向量对应的频率向量) H. Z, r9 `7 V$ I: {) g

    ; O( I7 x6 Y. j% E%************对已调信号u求傅里变换**********
    8 v3 e% C, u+ _4 b8 yfs=1/ts;
    $ G8 A) r% x/ Lif nargin==2: f4 a3 c- _6 q' H2 ^  q
        n1=0;
    ! z4 v; P0 d" m2 N4 o& U* delse' @$ z8 c$ g  ^+ I' K- e
        n1=fs/df;8 L# e% ]6 Q# b* {! k  u$ I
    end9 p. O" n7 X" n% j
    n2=length(sfm);: i. p: R2 j+ G. a) W4 T. B1 C
    n=2^(max(nextpow2(n1),nextpow2(n2)));2 K( p, r- Q2 c9 F) V0 e$ s. Y
    U=fft(sfm,n);
    ' ?; J6 i% G" Cu=[sfm,zeros(1,n-n2)];' \8 E7 p* h& l( x& U5 _% ~
    df1=fs/n;                                   %以上是对已调信号u求傅里变换3 ~( M- U( R# L4 h) v# g* b
    U=U/fs;                                    %缩放
    ; \3 ]& W" ~- D1 U: Q2 j( {%******************************************
    ! n% o& B7 O7 R! r/ q%*****************************************$ q  W  i3 {3 g4 i" U1 [
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    / F1 t6 E3 L0 A+ q# y- |%***************显示程序******************
    3 {; T  T7 s) Rdisp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')" o1 R+ C& A( C! f9 Q1 a
    pause
    / l( ]" R, s3 }# [" [/ Z%**************figure(1)******************9 t7 o; P  E; G: f/ Q: T# |
    figure(1)
    , W( f. {* d& q3 D8 asubplot(3,1,1);plot(t,mt);                                 %绘制调制信号的时域图
      l( d; x1 n2 V! f: J: U7 Y' ?xlabel('时间t');' \3 I& c6 I+ f' d8 g) _
    title('调制信号的时域图');
    9 S$ E3 R3 c/ b) {3 ~, dsubplot(3,1,2);plot(t,ct);                               %绘制载波的时域图
    " W/ ?& q0 M* ?  ~: Z5 J, T, rxlabel('时间t');! ~& F$ i! |) q
    title('载波的时域图');
    0 J* b5 @! q2 s/ W, x- Y8 vsubplot(3,1,3);
    3 a* F$ M4 ?7 }! ~plot(t,sfm);                                                  %绘制已调信号的时域图
    - k- i; O& U! Q% R: rxlabel('时间t');$ h6 q! D9 b' c3 U% ^2 G
    title('已调信号的时域图');
    3 Y6 W* H% X  Z: B/ M$ X%******************************************9 O* l2 [, }8 O7 [! o0 I* O) o
    disp('按任意键可以看到原调制信号和已调信号在频域内的图形'); n( ~6 a1 d- Z0 k, B9 d; H3 [/ b
    pause; S' E' @4 s; q# D7 q- u0 }
    %************figure(2)*********************) j8 o  d8 r3 o. i
    figure(2)
    , M' K* e0 w* \( V. I; wsubplot(2,1,1)
    ; u# s) R. [5 i& p3 Pplot(f,abs(fftshift(M)))                        %fftshift:将FFT中的DC分量移到频谱中心
    * h: `4 I* c, A! X- A$ txlabel('频率f')
    ( e7 s# }" h- o* f. Ytitle('原调制信号的频谱图')
    $ h1 Z! P" [; N/ Xsubplot(2,1,2)
    . r- p9 |  C9 w! v" G3 w1 ?plot(f,abs(fftshift(U)))! M% w; M1 F" b, t
    xlabel('频率f')8 ?/ A, U5 L4 ^' F* H0 Z& X  q
    title('已调信号的频谱图')
    0 T1 f: e- m. W% v. K- t%******************************************
    : e$ D7 ^4 g6 n7 J0 }disp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')
    7 C; ]2 |# b3 o* T' L  ~pause
    # V; R5 X4 N& I" s) y. ~9 E. [+ `%**************figure(3)******************
    $ w$ k. \0 ~6 f! O1 n1 c( ~figure(3)
    / o0 N4 S1 I+ |& ]3 w1 c5 msubplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图
    + G( @5 w. X3 S2 X% P9 `# Xxlabel('时间t');
    2 X$ l: [3 u" Rtitle('调制信号的时域图');
    8 e  w: J5 V9 @: t+ x( Ksubplot(3,1,2);plot(t,sfm);                              %绘制已调信号的时域图9 }; k7 L* j! z2 J5 Y
    xlabel('时间t');
    6 S4 o2 \6 ^4 t4 w/ m  e- H5 Jtitle('无噪声条件下已调信号的时域图');& b' q3 j- H, k) E; \0 [
    nsfm=sfm;                              - {) N7 X; q; X. Y( f( r0 S
    for i=1:length(t)-1                           %接受信号通过微分器处理
    4 n9 Q0 l' N7 z* N! ]! p    diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
    9 `) G  z( [# H4 j# V' y) vend$ }/ ?% q4 ?! H7 _$ y
    diff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)8 c+ y# F1 y' q1 \
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    0 n) d4 O6 E& g) r+ Rdiff_nsfmn1=diff_nsfmn-zero;% S! G8 s8 Q8 S8 }- ~3 Q
    subplot(3,1,3);                             %绘制无噪声条件下解调信号的时域图8 @7 C$ H1 r3 H% ^1 t8 ^0 j$ H
    plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
    8 i& z; [. r" p. Sxlabel('时间t');                          
    0 X( N2 N, Y* n' q: n2 F* l% Utitle('无噪声条件下解调信号的时域图');( N' V0 a+ n2 F# S8 j7 J
    %*****************************************
    + K, ?$ @: k/ R2 s9 ?disp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
    % p5 U/ I' S4 t3 f9 H+ k% M6 Opause
    * m0 u' F, ^( U/ I, i; d7 a- K%**************figure(4)******************7 u: Q4 n% `5 y6 C
    figure(4)
    0 p1 e( l$ B; B+ \/ m, F/ V+ dsubplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图
    5 J& |2 c- Y  B( H5 h& i8 [  Ixlabel('时间t');  T( o4 C- b/ W5 C5 I" L
    title('调制信号的时域图');% O7 r2 h9 G4 g8 p; t6 L( X5 Q+ O* ?
    db1=am^2/(2*(10^(sn1/10)));                   %计算对应的小信噪比高斯白躁声的方差" v1 s5 y/ f" b; I/ ~
    n1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声
    5 T1 c/ Y, S( u; vnsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通
    ' u% V. P& u7 ^* f1 p%                      %过信道传输)
    7 d$ |1 B+ d' m+ ^8 S7 A. V( R( ffor i=1:length(t)-1                            %接受信号通过微分器处理
    ' w/ c: b1 J# }    diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
      U5 F- j6 W! b- c7 E7 uend# X8 m; ~9 F( ~8 e% k: y
    diff_nsfmn1 = abs(hilbert(diff_nsfm1));   %hilbert变换,求绝对值得到瞬时幅度(包络检波)0 I  @0 q! [; \6 n+ g6 e
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    - W7 b, f7 b% Q" J8 ~) V! Mdiff_nsfmn1=diff_nsfmn1-zero;
    . s1 W: S. @( K; `subplot(3,1,2);
    7 \/ Z) t( P+ y$ z/ Q6 Q; Bplot(1:length(diff_nsfm),diff_nsfm);      %绘制含小信噪比高斯白噪声已调信号的时域图
    $ {& T; S, p( }* O: I" exlabel('时间t');
    ; s' p: y6 e# gtitle('含小信噪比高斯白噪声已调信号的时域图');
    7 Z! G1 B8 G, }1 osubplot(3,1,3);                        %绘制含小信噪比高斯白噪声解调信号的时域图
    ) U3 J3 Z" N  g9 @5 _plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');1 f1 G1 y$ X5 c  [
    xlabel('时间t');                          
    + z  b; u8 n( Z# k3 o- {title('含小信噪比高斯白噪声解调信号的时域图');1 ~3 v2 f5 z8 j
    %*****************************************
    $ i$ ~- a' q( [& b) j5 a2 [disp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线'); c9 M1 t% j* V/ ]+ u$ L% f3 e) U+ o1 x
    pause" x# |$ M, _$ F. k* z6 m% q
    %**************figure(5)******************
    ( D& t+ b# \5 d& Z# J5 rfigure(5)
    ! F* a! }1 W, T, ksubplot(3,1,1);plot(t,mt);                                   %绘制调制信号的时域图) S! {$ e" Z* ~
    xlabel('时间t');
    ) {; o- J) h# W4 @2 ftitle('调制信号的时域图');
    ) ~8 ?; J9 U0 J" edb1=am^2/(2*(10^(sn2/10)));                   %计算对应的大信噪比高斯白躁声的方差/ c5 s7 u/ O  Q7 D; z# L
    n1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声
    6 p) i2 L- l& [/ ]. P9 rnsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通过信道传输)( f2 j0 l0 o# c: s, a
    for i=1:length(t)-1                             %接受信号通过微分器处理
    . J$ Q4 k' {% X; y& @1 k    diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;. F& Y0 B: ]( ~( A
    end
    & i0 ]; C! ^4 zdiff_nsfmn1 = abs(hilbert(diff_nsfm1));            %hilbert变换,求绝对值得到瞬时幅度(包
    5 S! K3 A' a( D8 U& z, J%                      %络检波); Y) d( Y' B' w
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;9 Q* e8 Y- Z5 y  ~- m
    diff_nsfmn1=diff_nsfmn1-zero;
    ( j; f: `! P5 t  Z9 W! {8 rsubplot(3,1,2);
    5 }" g% `& H8 N( e& E/ yplot(1:length(diff_nsfm1),diff_nsfm1);             %绘制含大信噪比高斯白噪声已调信号* Y5 a  C6 d$ u4 w1 s
    %                      %的时域图- D; y, @' k* I: e9 N2 A
    xlabel('时间t');9 r8 h# f& c; f! P* {2 O# z
    title('含大信噪比高斯白噪声已调信号的时域图');
    2 y+ E- @5 A8 P8 F6 X$ Dsubplot(3,1,3);                                %绘制含大信噪比高斯白噪声解调信号% P/ e) u* b& \
    %                      %的时域图$ ]- Y: o* Y, @2 ~3 N
    plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
    ! p# L' S) b7 q- N& [: f& j9 xxlabel('时间t');                            : w% ]& @* K9 c' S+ j7 \4 ?
    title('含大信噪比高斯白噪声解调信号的时域图');1 T# i0 ?, p% P8 W  w% B+ [3 }
    %*****************************************
    ! l2 P+ @/ N7 T0 w%******************结 束*******************
    - w4 m* K: W& `1 @! r* S3 V
    6 q: y% t/ {: B
    ; V; Y& y0 w5 f, h! B# y5 _
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    李秋锐        

    14

    主题

    14

    听众

    76

    积分

    升级  74.74%

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

    [LV.4]偶尔看看III

    社区QQ达人


    ) i9 W; P2 |- Z9 b% ]$ y0 F) m
      G  i' v2 Y) v. T* l4 Q: {' r& U4 X* ]9 C1 P, Y  R$ j6 t
    。。。。。。。。。。。。。。。! ], Z& q& o! Y
    & J& R* e- p; b  d1 A. `; s% {( U
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-6-15 04:26 , Processed in 0.401566 second(s), 59 queries .

    回顶部