QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2091|回复: 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% E8 g) ], t( q+ J% r$ P$ f
    %频率调制与解调的Matlab演示源程序
    ! s$ i* h3 U/ F" y' D8 Q+ ]7 r%可以任意改原调制信号函数m(t)# @9 j( O. f0 r0 K
    %电子信息工程  杜怀超 091308305  
    $ z. M8 l& G* k' r; D%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·% h5 ^- j8 [2 U# Q: D
    %*****************初始化******************
    2 Q' P- m) Z4 l5 g# c* Gecho   off       8 O+ n, _% E, ~5 M8 K
    close  all/ h+ S/ ?& v% Z0 u
    clear  all: b8 P, Y. y/ V" o1 I
    clc
    : e+ Z* z' u  H6 w2 k% {%*****************************************' Z$ d5 `  ]1 c4 C2 ^, ~
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·9 v1 `0 Z) g. z2 j
    %****************FM调制*******************
    * h6 _! R9 a; k; ]. c* T# A% ndt=0.001;                                   %设定时间步长8 u' Q. h2 X3 J
    t=0:dt:1.5;                                       %产生时间向量
    / ]2 ~+ L1 n8 _$ Q5 q: {  f3 ham=5;                                      %设定调制信号幅度6 L3 e1 c  C: C- r
    fm=5;                                      %设定调制信号频率
    % `2 I. C! @0 x+ c# zmt=am*cos(2*pi*fm*t);                        %生成调制信号" \5 `  p% j: z7 ^5 Y, W
    fc=50;                                      %设定载波频率2 W8 @; u& a6 s+ }' K! j
    ct=cos(2*pi*fc*t);                             %生成载波7 G; P( w& p+ @) K# @
    kf=10;                                      %设定调频指数
    . H& Q/ ?$ Y  v# `' `! V" |int_mt(1)=0;+ r1 e; `& R! ]
    for i=1:length(t)-1  0 c: H  X9 v0 q3 [- T
        int_mt(i+1)=int_mt(i)+mt(i)*dt;               %求信号m(t)的积分$ \! ^' h9 R  ~0 [, n6 E" @
    end                                          %调制,产生已调信号
    + b7 r+ M+ [4 U- N5 jsfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt);            %调制信号' ~5 P2 F# h$ P, v2 ]4 F8 M+ q0 [
    %*****************************************
    ( B4 M& I" k. C. A/ q9 p2 f%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·: u1 `" [( _3 X
    %*************添加高斯白噪声**************
    # n* i& W. g' j8 H1 |1 F& h" x) |sn1=10;                                     %设定信躁比(小信噪比)$ S& k8 H; o& D2 O4 R
    sn2=30;                                     %设定信躁比(大信噪比)/ S1 d( a* _( O; q% Z0 y8 M. p: [3 ]
    sn=0;                                       %设定信躁比(无信噪比)
    6 z/ c9 _7 K2 `db=am^2/(2*(10^(sn/10)));                     %计算对应的高斯白躁声的方差& w& a7 L& ]$ s8 }' p! N
    n=sqrt(db)*randn(size(t));                      %生成高斯白躁声
    " L3 f! L- _; U& }/ Vnsfm=n+sfm;                                %生成含高斯白躁声的已调信号(信号通3 j( y! w2 w( o* [+ D
    %过信道传输)
    + X9 Y1 F: I: I2 o1 k1 f7 U%*****************************************
    ) b9 u7 z* x  i  y& u6 ?! V%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    $ {( d- ^2 t, {2 b2 Q' l%****************FM解调*******************
    6 ?: X* F5 n7 ]9 e  m( jfor i=1:length(t)-1                             %接受信号通过微分器处理
    3 t( z2 G% q, X- F9 [    diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
    4 @0 u0 P7 h: I) l. `# cend
    5 r2 f2 A& ^* @2 S2 V/ F& K* S0 ?5 @diff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)
    7 q5 T  ^3 M' `% rzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;+ r  C# J7 O. d: Z" [( w1 U" G2 P
    diff_nsfmn1=diff_nsfmn-zero;
    . J- e8 S5 J) t7 g: m%*****************************************
    3 |/ J+ L) `3 {5 \%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    ' ^9 z. H8 V4 X& u2 ]0 y%**************时域到频域转换**************
    ! M6 S' n! H1 E8 c1 w& ^ts=0.001;                                    %抽样间隔  i4 T! R" ^, y0 R$ R5 d
    fs=1/ts;                                      %抽样频率
    . w  U4 @, O4 n8 d; }df=0.25;                                     %所需的频率分辨率,用在求傅里叶变换5 g7 E/ E. @$ l. j. \
    %                      时,它表示FFT的最小频率间隔
    1 }7 S* D* q6 l1 _%*****对调制信号m(t)求傅里叶变换*****) \, \* V4 e( L. B& H/ I& q% j
    m=am*cos(2*pi*fm*t);                         %原调信号% X3 i) ~/ N. O+ j( d
    fs=1/ts;
    ( T2 j. a! o$ X# x0 p7 a" i8 y8 zif nargin==2
    ! O- A5 ^% f5 Z$ H8 Z; r    n1=0;: i& Q7 d' E* W6 q2 s" t1 |
    else
    7 J- x' m% A2 M/ Y8 K1 P; W    n1=fs/df;4 k; E. c# c& @0 ]
    end
    5 K1 `! K/ b1 W- An2=length(m);
    8 y3 h- f" c+ z& W; o$ a: dn=2^(max(nextpow2(n1),nextpow2(n2)));
    ! U* ~7 q; t/ PM=fft(m,n);3 c/ V, ~0 r: }
    m=[m,zeros(1,n-n2)];1 T$ ~! P# x% z' ?) w; X
    df1=fs/n;                                   %以上程序是对调制后的信号u求傅里变换
    1 G4 V! X$ |6 U$ [# W$ q+ O4 T2 zM=M/fs;                                   %缩放,便于在频铺图上整体观察
    " H: ]  S9 `5 ]' r2 of=[0:df1:df1*(length(m)-1)]-fs/2;                %时间向量对应的频率向量& M0 K( e, h2 d0 ?8 H; L3 ]
    " l. A& R5 H' |% _
    %************对已调信号u求傅里变换**********
    % y6 L. U8 F% N$ T8 \8 ffs=1/ts;
    & o* n$ Y7 f# n+ @( m, Q: Z4 v4 jif nargin==2
    ; K5 s% T3 c8 u8 U    n1=0;% j2 U" y) S; `+ o; b5 L
    else
    1 o: p" U0 O, j4 ?0 f$ ?# j  {$ `    n1=fs/df;
    / g, E* z- _. j: O) k3 ~2 }end
    # K% B, [  G$ J- g4 V& R, |. En2=length(sfm);( |8 H. t# y. i$ g9 l( P# K
    n=2^(max(nextpow2(n1),nextpow2(n2)));
    ' }4 P: d0 L2 T8 W0 eU=fft(sfm,n);% g; Y; _* J' _; q8 u. r: h
    u=[sfm,zeros(1,n-n2)];
    ' b& K: N- F% H' |6 e  L" Ddf1=fs/n;                                   %以上是对已调信号u求傅里变换9 O/ x8 y' h6 J4 y
    U=U/fs;                                    %缩放
    0 {7 r" [& F. s5 e6 d4 g%******************************************
    / S8 x* b9 h0 g- e& w%*****************************************
    % R6 @7 ]) t, k: l%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    # B9 o/ V. T, K# w1 }4 _& J%***************显示程序******************9 `! U( X; D- C
    disp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')
      Y8 t# I% S' m# E/ c; Ipause! H4 F* x% T- }* D
    %**************figure(1)******************
    $ c1 O: G& J4 m% ^6 s0 @figure(1). N( {0 G$ Q8 |$ _4 w1 Y
    subplot(3,1,1);plot(t,mt);                                 %绘制调制信号的时域图
    2 @- v6 y5 }/ J' s$ x! c8 Wxlabel('时间t');
    ( g8 H: e+ \8 D- ]title('调制信号的时域图');
    # h5 O; M, @' T& U4 J# esubplot(3,1,2);plot(t,ct);                               %绘制载波的时域图6 K! N, }: k9 ]: F; X* ]9 y
    xlabel('时间t');
    $ z: g# R3 J' H' Etitle('载波的时域图');
    ; ^/ ?) H# f% Q/ xsubplot(3,1,3);3 X% A( _+ U$ f; ~
    plot(t,sfm);                                                  %绘制已调信号的时域图
    ( Q8 I. i! H6 X# i+ Oxlabel('时间t');
    6 f3 S9 B9 N0 j' P( \8 e: Wtitle('已调信号的时域图');
    + b1 I. U3 t" j1 f" b" z# R" v%******************************************
    # \4 u+ n+ k2 ~& p+ o# O6 jdisp('按任意键可以看到原调制信号和已调信号在频域内的图形')
      V  w3 y8 U( Spause
    / \7 u. H9 J; {! S# |+ G7 N%************figure(2)*********************5 O: h* i0 X6 X. ~' K$ m
    figure(2)1 A0 C; Z  ^5 z/ X3 \
    subplot(2,1,1)- d# @" R4 O5 ]( D
    plot(f,abs(fftshift(M)))                        %fftshift:将FFT中的DC分量移到频谱中心
    # y1 o3 c$ p0 j, f" y/ jxlabel('频率f')( ?- ?3 B) R5 g# I  ~4 A) \
    title('原调制信号的频谱图')
    " o" j; Z- k: g( S' N8 zsubplot(2,1,2)
    * J2 b8 K6 j' P( vplot(f,abs(fftshift(U))); }0 }3 L/ K6 S- ~* a. ^# l  i6 B
    xlabel('频率f')9 R0 a0 x6 q) a5 j" p" B7 J' K
    title('已调信号的频谱图')
    * K9 d5 F& ]' U( E- C4 s7 `%******************************************
    4 @- x) i: ^: V' u9 G* r8 ndisp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')
    , S$ l4 \# h8 q5 @' z0 Lpause7 }4 g5 [9 Q6 q0 u1 z/ [
    %**************figure(3)******************
    ) Q. E5 s5 ^! ]! I3 u: P  N  lfigure(3)6 `8 ^7 [2 W# T4 ~
    subplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图
    $ D1 m4 S- F; R, S- o; h7 Vxlabel('时间t');. u6 L7 o+ s  p( X0 P
    title('调制信号的时域图');" \' |& F# j2 N8 Q2 T: V. m6 c
    subplot(3,1,2);plot(t,sfm);                              %绘制已调信号的时域图
    % e  v7 [1 |% b6 Q$ R! Mxlabel('时间t');
    / L: @4 E0 [& y8 W, k! ktitle('无噪声条件下已调信号的时域图');$ e% o+ X& ~4 c  o$ a0 f: P, [
    nsfm=sfm;                              1 f. g$ N% j$ {) X* p
    for i=1:length(t)-1                           %接受信号通过微分器处理
    + K! F* q4 x' ?' w9 Z+ c    diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
    1 |* X: F: q- r) ^end& g3 k) D* @) [
    diff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)8 f" }# e# V: A( a( |4 O
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    / A* k% `" p9 {  K. Cdiff_nsfmn1=diff_nsfmn-zero;
    ) ?5 t' d5 k& S, f. Fsubplot(3,1,3);                             %绘制无噪声条件下解调信号的时域图  ]8 F0 v2 @$ O* H, R% c
    plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');9 x) D8 u8 x7 `8 Q6 L: ?2 n8 K. `
    xlabel('时间t');                          * L9 D. k6 ~& g, N  _. u% D
    title('无噪声条件下解调信号的时域图');
    ; G/ v: u- j: t7 @%*****************************************
    & c2 P8 ~5 W3 }/ W9 v# H6 Q; I. hdisp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
    & }- |: c. S% _& i5 P# _pause
    ! j, v+ a5 m# P6 n%**************figure(4)******************
    ! r* B3 V- F8 w. d4 kfigure(4)% ~( P5 O' S1 g! @* U. N% \4 w
    subplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图9 e+ Y8 k" l( _! |: Z
    xlabel('时间t');2 a" j5 j" @! y3 `8 r. }. i. _$ L
    title('调制信号的时域图');
    ) s4 S( p6 V4 M* hdb1=am^2/(2*(10^(sn1/10)));                   %计算对应的小信噪比高斯白躁声的方差
    . R' N: b- D( \+ _; {7 K# e7 `3 on1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声$ M1 s1 @: ]# d! l! X+ E
    nsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通
    5 f6 G& N' o* U# M' O$ h1 @%                      %过信道传输)
    8 F! v8 u5 n0 S, E! o/ [2 Yfor i=1:length(t)-1                            %接受信号通过微分器处理
    3 W3 `( U4 k/ l! V, S  ?, u    diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;9 R# F7 g/ V  H! \  k. }' {
    end$ ~) L/ V2 E# S3 Y3 l/ H
    diff_nsfmn1 = abs(hilbert(diff_nsfm1));   %hilbert变换,求绝对值得到瞬时幅度(包络检波)5 T- s" q! ~7 Z( ?) S% m
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;9 ?) p+ F, r+ ]0 B
    diff_nsfmn1=diff_nsfmn1-zero;3 Q, y* j* I' X2 c5 _1 N( C. ~
    subplot(3,1,2);
    7 N7 P5 ]8 T4 F( N0 F) Yplot(1:length(diff_nsfm),diff_nsfm);      %绘制含小信噪比高斯白噪声已调信号的时域图
    7 `2 D* \! ~& m: D( y  sxlabel('时间t');( X4 u: J* w7 L8 Y% q8 q+ a6 {, ~
    title('含小信噪比高斯白噪声已调信号的时域图');0 E/ c$ |- f7 L. M5 q
    subplot(3,1,3);                        %绘制含小信噪比高斯白噪声解调信号的时域图7 `& X* K! m( U0 w: Q
    plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');* }! Y- K; L2 V  t1 _) M% z9 m
    xlabel('时间t');                          5 S; y6 h/ W! v! k9 n# O# }# @( C3 h& e
    title('含小信噪比高斯白噪声解调信号的时域图');
    5 M% T) P1 G5 c%*****************************************
    + r7 K, K# q7 ~/ {# Vdisp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
    3 h2 F! h  m7 v3 }8 V! Z6 [6 Bpause0 I, i) u& P' C0 i
    %**************figure(5)******************
    7 W: J: K& f3 a0 n8 gfigure(5)! |1 x2 e2 z1 b8 C6 f& B! l) g; X
    subplot(3,1,1);plot(t,mt);                                   %绘制调制信号的时域图/ F( }& k. `) Z* D; ^
    xlabel('时间t');& L; o) [5 Q4 E
    title('调制信号的时域图');& A. Q  u/ T+ L! O% f
    db1=am^2/(2*(10^(sn2/10)));                   %计算对应的大信噪比高斯白躁声的方差
    " d8 d! e  \7 ^3 Tn1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声
    ) C: \& T! H( O8 p/ }nsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通过信道传输)" c4 e2 d! y; V. j- U- j5 c
    for i=1:length(t)-1                             %接受信号通过微分器处理6 t$ b6 ^+ V" ~2 I
        diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
    5 w+ V0 J, p- _2 gend
    8 Q2 [# x, {; ~& l5 Q$ P! m7 t( Zdiff_nsfmn1 = abs(hilbert(diff_nsfm1));            %hilbert变换,求绝对值得到瞬时幅度(包
    1 a( j2 Q( }" m4 Y: G0 U/ B4 S%                      %络检波)0 ]: x6 V9 O% T1 i6 Z
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;8 m! U* w) p7 X8 a6 o# k: b$ u% S
    diff_nsfmn1=diff_nsfmn1-zero;
    . a$ g- P5 l/ {* Asubplot(3,1,2);
    / R' {1 q, O8 c0 I2 p& H$ U, xplot(1:length(diff_nsfm1),diff_nsfm1);             %绘制含大信噪比高斯白噪声已调信号
    8 x! h% N" Q# X( C%                      %的时域图
    5 W8 s9 n2 ~& U% hxlabel('时间t');! i, B; u7 g3 U5 @8 ~
    title('含大信噪比高斯白噪声已调信号的时域图');
    " Q6 w2 `8 h/ R) asubplot(3,1,3);                                %绘制含大信噪比高斯白噪声解调信号# Q; G, E8 v' p% N, f
    %                      %的时域图
    # t7 N5 Q6 W+ [0 v7 }! tplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
    4 i) o+ t; d  ixlabel('时间t');                            ' q9 d1 U4 @+ t, [1 r* P$ q
    title('含大信噪比高斯白噪声解调信号的时域图');
    & ?( Z' r, F/ k$ A* R& y( w%*****************************************: ?! G4 l2 u7 B% h8 J- Y
    %******************结 束*******************5 @- g% G' M/ C- C% @( O
      w* ~* u  r% r, C
    5 s& N1 m8 z* {* f- q' @
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    李秋锐        

    14

    主题

    14

    听众

    76

    积分

    升级  74.74%

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

    [LV.4]偶尔看看III

    社区QQ达人


    1 H; F- a1 n+ r+ C  M/ o. ?: q, b

    : Z- p& ?' x. p。。。。。。。。。。。。。。。/ b7 e! Q3 Q. m( p: w

    ) D  P. I5 r9 H3 I
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-4-13 12:36 , Processed in 0.428211 second(s), 59 queries .

    回顶部