QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2181|回复: 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
    & A- y4 K5 |8 G4 I) k( k%频率调制与解调的Matlab演示源程序
    ) N" x& M. ?: O- n, i4 D%可以任意改原调制信号函数m(t)
    3 U( f4 {" e# I0 \%电子信息工程  杜怀超 091308305  
      r+ q; r3 V, f: ~, J%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    ( N& ]! U# h2 U' C9 p8 {' i%*****************初始化******************
    0 H# X/ V3 X$ Z. u3 Aecho   off       1 N" R  n* x7 Z
    close  all* Q+ \. q+ D* M) ]" t
    clear  all% E% J2 m  y) T
    clc  q/ R# I. a. i1 T) \
    %*****************************************% X4 R: g9 u4 Q# i& S$ u
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    3 R# S+ U5 E5 w% X4 T' f' r%****************FM调制*******************9 {- ~% U' G7 Z" b/ P
    dt=0.001;                                   %设定时间步长! o2 E* v4 p/ m0 ~; X
    t=0:dt:1.5;                                       %产生时间向量
    3 ^2 L" t8 F7 W) ?, }& dam=5;                                      %设定调制信号幅度3 O3 a9 T: z2 n, r
    fm=5;                                      %设定调制信号频率
    : z) ]0 c+ T. M8 i2 O$ bmt=am*cos(2*pi*fm*t);                        %生成调制信号
    % w+ Z9 Q' `4 E# p4 v  }% yfc=50;                                      %设定载波频率
    0 m1 O' c9 [; ict=cos(2*pi*fc*t);                             %生成载波
    * m! e1 j7 L3 d' \5 Dkf=10;                                      %设定调频指数
      W$ a( S' J! I" I& J1 _6 ~" U3 H6 Cint_mt(1)=0;0 `1 R8 p  N. A, h6 a6 F' H8 Z
    for i=1:length(t)-1  
    ; c0 b  R$ g! f. v1 o    int_mt(i+1)=int_mt(i)+mt(i)*dt;               %求信号m(t)的积分
    + n! W/ @! g8 V' L. z0 \+ }4 @end                                          %调制,产生已调信号5 i, @; M. d  Y. [8 j2 E" m/ }
    sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt);            %调制信号
    1 S' b6 \2 a: t9 X, }%*****************************************
    ; }& e; d- z0 u3 A; u* C%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    4 }; n) R# w, v%*************添加高斯白噪声**************
    ( o0 M: @! p5 Zsn1=10;                                     %设定信躁比(小信噪比)% x; P; ~) ?( I
    sn2=30;                                     %设定信躁比(大信噪比)
    4 i" |% F5 w. Jsn=0;                                       %设定信躁比(无信噪比)
    2 x% w( l, z: Hdb=am^2/(2*(10^(sn/10)));                     %计算对应的高斯白躁声的方差
    1 e' ]/ z) H6 j* Tn=sqrt(db)*randn(size(t));                      %生成高斯白躁声
    3 k8 ^, B0 P% s7 E  Dnsfm=n+sfm;                                %生成含高斯白躁声的已调信号(信号通
    3 ?4 y% M' S6 B% r%过信道传输): H/ Y) Y2 |% S" W, `
    %*****************************************
    ) k8 O5 d" n- b$ A6 G+ N5 a) G%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·* [# u# v1 y  f) N
    %****************FM解调*******************
    4 A7 M8 g6 [: |- xfor i=1:length(t)-1                             %接受信号通过微分器处理1 K0 c6 w- A7 S6 ^) J
        diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
    5 h% `- P. T, g& k5 r, n* @end
    8 h2 P5 ^6 X1 z7 Gdiff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)5 X" V+ A6 W$ a7 {9 U
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;9 c- t) b+ `2 y
    diff_nsfmn1=diff_nsfmn-zero;7 w1 l8 v! b+ B6 E/ s8 n
    %*****************************************
    8 `* F: M) V3 O9 V0 Y4 a5 Y% T%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    ! g4 }1 E. a, f/ U%**************时域到频域转换**************
    % c) j8 c' j6 `, Vts=0.001;                                    %抽样间隔! r: H1 X( U+ I
    fs=1/ts;                                      %抽样频率
    + g# S# P  L% O+ @3 Rdf=0.25;                                     %所需的频率分辨率,用在求傅里叶变换
    7 t! b' m1 V% e4 O3 R' R%                      时,它表示FFT的最小频率间隔
    5 l1 d7 v2 S# K, p%*****对调制信号m(t)求傅里叶变换*****7 y8 S3 D! ^/ S+ S5 U# `: Y* g
    m=am*cos(2*pi*fm*t);                         %原调信号
    ( D% j) q! n$ Y  Qfs=1/ts;
    - r% I3 |+ h2 M% T8 i" @- nif nargin==2
    " c) f$ @0 `0 P& F    n1=0;
    ) |, O5 @! O; i, o6 E( K: m6 oelse2 F4 n* f! [6 x
        n1=fs/df;3 b1 c* j7 ]# W, G: p/ ?
    end
    & l9 R. ?7 d( Y" _1 `; gn2=length(m);% s6 `( G0 @8 Q$ r( C) w9 ?
    n=2^(max(nextpow2(n1),nextpow2(n2)));' f( ?7 ?& U) G$ \. S
    M=fft(m,n);
    ( O+ t/ \1 C0 J. e4 v' Hm=[m,zeros(1,n-n2)];/ Z9 p+ d3 l( h' `' v% a# ]
    df1=fs/n;                                   %以上程序是对调制后的信号u求傅里变换
    ( i2 m% o6 {& Q1 UM=M/fs;                                   %缩放,便于在频铺图上整体观察
    2 |$ G6 z9 e" G9 m% a. ]f=[0:df1:df1*(length(m)-1)]-fs/2;                %时间向量对应的频率向量
    / C3 x% l0 p" G# ~" J9 _( H5 ]/ J1 d
    %************对已调信号u求傅里变换**********
    2 [, M5 `" e6 ^8 u7 z) tfs=1/ts;
    % R9 U! `- C9 W) [# `' Gif nargin==2
    + e# \7 p4 z& D- w* S- B9 V+ k; o    n1=0;' d( t4 ^7 Q+ s' |* P* w3 e
    else( \8 F2 h8 |1 U9 e2 k1 f4 _
        n1=fs/df;
    2 N; `  U0 `7 U+ z/ f7 B$ B) J- Kend" K' `0 c; t' t) w% ]/ Z
    n2=length(sfm);
    9 X  B9 r' l- A; P6 y  sn=2^(max(nextpow2(n1),nextpow2(n2)));+ W9 S. i- z5 ~
    U=fft(sfm,n);
    : i1 b+ {; g8 h+ @7 qu=[sfm,zeros(1,n-n2)];9 @2 O5 ?  H. V% |
    df1=fs/n;                                   %以上是对已调信号u求傅里变换
    / _8 v' M( [3 v; T; f+ NU=U/fs;                                    %缩放  q) K' N% [1 R, I
    %******************************************
    9 o7 t  Z/ g2 e  `* t& \%*****************************************% a/ ?" d+ t% _) |! k6 {8 n
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
      p8 p% L, Q, s3 w%***************显示程序******************
    7 r4 b0 }+ Z$ O4 `! J% ^' s6 ^% R2 jdisp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')
    & A4 g% w/ f1 mpause
    - e; d# A" G0 Z. V/ h9 o%**************figure(1)******************
      F8 m* ~& {1 z' ^5 u( sfigure(1)
    ( c: }7 i4 Y1 v8 r& Ysubplot(3,1,1);plot(t,mt);                                 %绘制调制信号的时域图2 {* U' G/ m4 r' R( c" Z" P
    xlabel('时间t');
    2 v1 C9 c4 g8 b& R$ {( a2 ctitle('调制信号的时域图');, D; U" I/ k; N
    subplot(3,1,2);plot(t,ct);                               %绘制载波的时域图
    1 y5 R5 Y8 t# B' {  Yxlabel('时间t');
    8 v# S" {9 I. v9 d7 Etitle('载波的时域图');
    0 C* t3 h& ^! \) _subplot(3,1,3);* I6 c" K  f. X) X: Y
    plot(t,sfm);                                                  %绘制已调信号的时域图
    " u; |, ]. z& g+ y0 [) r2 G$ Pxlabel('时间t');
    ( h/ c; h1 p( B% {# F" S6 ^title('已调信号的时域图');
    & _7 o- I  w+ ^' w5 U" h: n4 W+ Z! ]%******************************************
    " i7 I. `/ G# ]: ~# n2 E& udisp('按任意键可以看到原调制信号和已调信号在频域内的图形')6 M( i. @" F7 B  B* ?
    pause
    * `8 r+ E; X+ [$ d( @3 S2 k%************figure(2)*********************5 i2 Y# k" V& J: P! c+ c; ^9 s
    figure(2), d& W; f; Z( F2 R3 k% [* c4 X% v
    subplot(2,1,1)
    ) r. {' Q! @+ n3 B; ^. k( c' O; \plot(f,abs(fftshift(M)))                        %fftshift:将FFT中的DC分量移到频谱中心
    0 w0 S5 D& @" |( V6 @xlabel('频率f')$ s- a" t* q# W! k1 R# J/ m
    title('原调制信号的频谱图')
    2 g; H* e: u; Y# d! W" i' z9 Bsubplot(2,1,2)
    # u- w4 I" z1 |1 m: `- J; bplot(f,abs(fftshift(U)))6 i+ ]- g# M& h( `: k- _% J; e  v. @& }
    xlabel('频率f')1 v- P7 p0 `4 T2 R0 S0 ]# h5 t
    title('已调信号的频谱图')+ i* L  t8 a. \2 G: e' b
    %******************************************
    4 R2 K0 H) T  q' D8 ^disp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')
    ! V7 i! _9 e/ @( J$ J, \! Gpause
    8 y0 N! j9 ?5 P+ }8 a%**************figure(3)******************
    - P; v5 |$ U6 E! Ofigure(3)
    0 m$ s8 G* Q$ S8 Nsubplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图
    / x2 b# ?3 E5 h! Yxlabel('时间t');
    1 k1 u. S6 ^, b2 u# Z0 Etitle('调制信号的时域图');% n, `9 b  @$ }8 W8 K6 M
    subplot(3,1,2);plot(t,sfm);                              %绘制已调信号的时域图9 L+ m& U' l0 q9 z. w
    xlabel('时间t');) K% k8 q9 v- Q5 n
    title('无噪声条件下已调信号的时域图');* ~1 N" |: M% Z
    nsfm=sfm;                              & X4 v( b# c' \% m! s- B
    for i=1:length(t)-1                           %接受信号通过微分器处理
    8 B6 ~' Q2 S; ]6 F    diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
    ) M+ T/ ?7 z, h3 s% \0 B4 Q0 Jend
    6 J6 \) T' {7 o' gdiff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)/ D0 c4 @) ~( `% D: n# w
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;0 k( I. w) i+ Q% X% R+ R
    diff_nsfmn1=diff_nsfmn-zero;4 y" n% |3 I7 z+ D& t
    subplot(3,1,3);                             %绘制无噪声条件下解调信号的时域图# ~* h5 s& g# w0 D
    plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
    , u4 G* H  a6 V: }xlabel('时间t');                          
    ; k: f) M( q( i3 b1 u; ~8 i' ]' Gtitle('无噪声条件下解调信号的时域图');
    1 F+ u/ Y% o* g7 J%*****************************************
    ( r3 F5 n: E/ E' Zdisp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')9 T: @- ~& s" V1 J
    pause
    2 Z" D" f- t8 H* l- b& |%**************figure(4)******************
    ; J: A7 _3 c- A+ d) Q! J. vfigure(4)
    9 z2 y2 j" ]6 Q7 K. Qsubplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图0 O# R9 n* G! i& q7 c
    xlabel('时间t');
      y/ \; s! q! ^  O+ u3 Ltitle('调制信号的时域图');
    2 Y9 D7 k* c; _/ M' M% Sdb1=am^2/(2*(10^(sn1/10)));                   %计算对应的小信噪比高斯白躁声的方差2 x+ S6 ?& ]- Y$ U+ R- V% }
    n1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声
    ' l( n" g3 c: c4 h5 g) \  @nsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通
    % Q3 }$ j5 \- M7 C7 {%                      %过信道传输)' S  p' \: F7 T7 I$ }
    for i=1:length(t)-1                            %接受信号通过微分器处理
    5 H5 v) `( M* x1 N" Y1 O    diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
    2 I/ C- w0 H, T0 ^/ _3 ]9 m6 ]end
    ' y7 ?$ `# ?9 W/ m1 \6 s1 ?! w/ Zdiff_nsfmn1 = abs(hilbert(diff_nsfm1));   %hilbert变换,求绝对值得到瞬时幅度(包络检波)3 f$ t) A2 G! z0 y
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    9 I8 ]5 [( @5 Y8 [5 qdiff_nsfmn1=diff_nsfmn1-zero;
    1 f: B1 y& _4 X9 p9 Wsubplot(3,1,2);
    6 D9 Z( p4 B4 |6 K4 y. mplot(1:length(diff_nsfm),diff_nsfm);      %绘制含小信噪比高斯白噪声已调信号的时域图7 P6 y% H7 r# h& r; y3 C
    xlabel('时间t');
    9 B% C6 [  _$ g9 n# ?$ ytitle('含小信噪比高斯白噪声已调信号的时域图');
    & m* Y  K9 R0 isubplot(3,1,3);                        %绘制含小信噪比高斯白噪声解调信号的时域图. I4 Q6 E2 |/ {2 S6 R
    plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');( x& b. {# |7 w5 S9 e2 a
    xlabel('时间t');                          
    5 t4 `! ^% r* B/ C3 `title('含小信噪比高斯白噪声解调信号的时域图');) K% F0 u) N' E
    %*****************************************- y- b# M( L8 \4 Y- e9 n& C9 l
    disp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
    ; M) l8 g: l. E: o6 N1 P# opause
    + G8 ]' j" W1 P" Y5 ^7 w%**************figure(5)******************3 _; N% i" ~  s& J) ?- b
    figure(5)
    0 c9 A% f) s1 Rsubplot(3,1,1);plot(t,mt);                                   %绘制调制信号的时域图
    * N( O/ M" ^0 A7 w* gxlabel('时间t');6 ^. D" k4 R7 M, }2 N
    title('调制信号的时域图');$ L' D$ k' R9 [* N) X" U3 @/ G' W
    db1=am^2/(2*(10^(sn2/10)));                   %计算对应的大信噪比高斯白躁声的方差- {4 F+ ~( y9 Z) p/ @
    n1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声
    & o; q9 @7 s' I7 x" h8 w8 mnsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通过信道传输)+ c# J4 p& T- U, @
    for i=1:length(t)-1                             %接受信号通过微分器处理
    3 W3 C9 O1 ?/ U- R$ w/ b    diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
    4 d5 ^* \) r: aend
    # x. W" i  F! _: {) {) L5 ?0 Idiff_nsfmn1 = abs(hilbert(diff_nsfm1));            %hilbert变换,求绝对值得到瞬时幅度(包
    % F. t; e: B. D! I. w$ P% R%                      %络检波)
    1 J3 i* `$ a* R! _/ Y& L! L2 N& y1 czero=(max(diff_nsfmn)-min(diff_nsfmn))/2;# e* l9 `6 B" g  u5 @
    diff_nsfmn1=diff_nsfmn1-zero;
      l! J! t# \! \6 Q+ M9 M! Wsubplot(3,1,2);
    ' @' q; G2 s$ J$ w3 l& Uplot(1:length(diff_nsfm1),diff_nsfm1);             %绘制含大信噪比高斯白噪声已调信号
    1 t3 {0 O! X& x9 k1 [0 f%                      %的时域图
    * `3 v9 t/ H! b! X0 _& ]4 xxlabel('时间t');
    ; ]* L: c3 }3 d+ D% ^& B" L0 t0 N7 _title('含大信噪比高斯白噪声已调信号的时域图');
    , A' I2 M7 o; N% H( psubplot(3,1,3);                                %绘制含大信噪比高斯白噪声解调信号
    8 G3 \$ q( q! Y" q%                      %的时域图
    . H* C6 \% ~' n2 H( Vplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');9 Y3 o/ y7 P" D* }
    xlabel('时间t');                            & Q0 c* n! u2 D- e5 v  s4 T/ Z
    title('含大信噪比高斯白噪声解调信号的时域图');
    & b" @) `, f! t9 v%*****************************************( {: C- H0 p: p; ^' U
    %******************结 束*******************  F0 K& ~: R5 ]! l6 p  J) _8 ^9 V

    / C+ N) b. k2 F0 {9 w1 Q& ^9 l8 N1 h+ T# A
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    李秋锐        

    14

    主题

    14

    听众

    76

    积分

    升级  74.74%

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

    [LV.4]偶尔看看III

    社区QQ达人

    # L( |2 r8 V# L: U8 }
    6 b- V1 G! n) O8 G/ @0 N) I# E

    ' L8 P9 Q% k; u+ K' e9 E。。。。。。。。。。。。。。。+ E/ S; c1 Y$ {, K+ Q" H9 }9 `

    ) J1 ^& H' `8 \7 }& Q, I7 X
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-8-23 14:46 , Processed in 0.444542 second(s), 58 queries .

    回顶部