QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2089|回复: 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! ?- T# T/ e) \: O1 }
    %频率调制与解调的Matlab演示源程序
    7 Y: P/ Z8 K2 f& U, w* }  y' k%可以任意改原调制信号函数m(t)
    ) \  R  j* z8 \: V7 X; M%电子信息工程  杜怀超 091308305  
    , @4 z! R/ _2 c/ n, V  A& C# S5 Y% W%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·* g5 z' i/ {; I3 p
    %*****************初始化******************+ s: H* X7 d7 l* r, k6 i0 a
    echo   off      
      s6 J( _0 T: c$ l. }/ Wclose  all. Y9 i* a) p" Q+ P# N0 d7 c7 S( J
    clear  all
    ; L- N' \$ h0 D# d, Wclc
    ' P! p; R2 \9 [4 O%*****************************************! }8 R: O9 v* q( m8 p
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    " a  z" q5 C$ @* f. t. Y$ z% ]7 @%****************FM调制*******************
    . O3 f" J$ }  b& K" c( P& Mdt=0.001;                                   %设定时间步长4 `0 _$ l! l4 P% g3 K* G
    t=0:dt:1.5;                                       %产生时间向量9 E; Y* f( r2 ]
    am=5;                                      %设定调制信号幅度
    - Q# ^) r4 d8 v! e) Vfm=5;                                      %设定调制信号频率
    2 U* a# J7 O; x' y. z' z! Xmt=am*cos(2*pi*fm*t);                        %生成调制信号9 i" O7 T* Z  n) _
    fc=50;                                      %设定载波频率# Y, i9 Y9 f, C7 {7 \
    ct=cos(2*pi*fc*t);                             %生成载波
    # G; a: @: K9 Q4 S+ g. ]* }+ x9 r+ `kf=10;                                      %设定调频指数
    2 c  b' q8 e- n" R& ?int_mt(1)=0;
      W+ n+ ?( t- n; @$ S. K* {for i=1:length(t)-1  2 X/ \% P1 s! e* V* `$ q( ^4 h
        int_mt(i+1)=int_mt(i)+mt(i)*dt;               %求信号m(t)的积分
    , m5 J: c& \2 B4 T+ w% h1 a. d  s9 Dend                                          %调制,产生已调信号
    % E, i5 {% d0 J/ G" ^8 \sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt);            %调制信号
    + U% {) O% W. ?8 k) A%*****************************************9 m; v0 \# h- v3 v+ A- g
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    % a+ I& Q  s% z2 o; ~% z0 h+ t%*************添加高斯白噪声**************+ C9 T( z! H: d9 Q: w
    sn1=10;                                     %设定信躁比(小信噪比)
    ; G, L; Y( K& w  @sn2=30;                                     %设定信躁比(大信噪比)
    / L. _6 A5 L+ j7 Osn=0;                                       %设定信躁比(无信噪比)
    9 p- n- `% g" n) c. xdb=am^2/(2*(10^(sn/10)));                     %计算对应的高斯白躁声的方差9 p3 o) g5 ]  r
    n=sqrt(db)*randn(size(t));                      %生成高斯白躁声4 z/ S7 ]6 }) [( ]
    nsfm=n+sfm;                                %生成含高斯白躁声的已调信号(信号通
    * R  ~) \. Q. D4 X* Y7 `%过信道传输)
    5 |7 o. R( `  Q% X3 u, s5 e%*****************************************
    & A  O3 l$ B6 J& E) ^& a# B" H%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·% S% H! a5 q$ P2 E, g+ I. d
    %****************FM解调*******************+ Z% T; F0 y+ \2 Y5 {
    for i=1:length(t)-1                             %接受信号通过微分器处理
    ! R; D# w, t% |' Q) [( Q! s    diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;5 Z: Y  y  ~+ \+ b# Q$ r6 ~
    end! E3 i1 J1 a3 I4 s+ b0 L
    diff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)- H0 m! g7 L: c# k) O
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    9 ~4 r. x, q. [4 K2 N$ d3 D, ^diff_nsfmn1=diff_nsfmn-zero;
    & p' t! _" \* z: L%*****************************************
    . W/ f0 _$ `9 A0 j0 T1 R" ?5 g%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·9 x  X$ l. R- y6 |! |$ w4 m
    %**************时域到频域转换**************7 [- o4 W* E2 i4 X6 r. a
    ts=0.001;                                    %抽样间隔/ g3 P4 M: Y& D0 W4 t
    fs=1/ts;                                      %抽样频率4 l( s: _9 F  V" [; h6 ]  C  S2 k5 |
    df=0.25;                                     %所需的频率分辨率,用在求傅里叶变换3 s7 R* l8 t, F7 i& N
    %                      时,它表示FFT的最小频率间隔
    ( ?! j9 T+ X6 f" |9 f  ]%*****对调制信号m(t)求傅里叶变换*****- h8 h/ c5 h- O& g0 h
    m=am*cos(2*pi*fm*t);                         %原调信号
    , B; s* O' C; W* f3 B/ |. }fs=1/ts;
    / g: H3 l8 g5 zif nargin==2
    8 E& u# o) u7 X( h3 b: m    n1=0;& `! h6 ~5 `+ j# H
    else
    6 W6 W' z8 G$ w$ r1 S( U    n1=fs/df;& O; \( d8 z. T$ ~2 T% q  x
    end, C' k) x6 x. B- {; L* C
    n2=length(m);
    ( n3 g1 b3 Q8 J+ b( ]( cn=2^(max(nextpow2(n1),nextpow2(n2)));0 t1 m# Q0 @( q, J& w9 p; J
    M=fft(m,n);" @' i9 y2 }* ?" b9 V
    m=[m,zeros(1,n-n2)];! ?0 ^! d) O1 L( O
    df1=fs/n;                                   %以上程序是对调制后的信号u求傅里变换. o& o# ^! C0 G% `& V8 }9 G
    M=M/fs;                                   %缩放,便于在频铺图上整体观察
    9 @, D- ?$ M1 Af=[0:df1:df1*(length(m)-1)]-fs/2;                %时间向量对应的频率向量
    0 k4 H1 {& G$ s( m6 d) r) u  i* W8 M/ {' Q
    %************对已调信号u求傅里变换**********4 I( D& W# Y1 n
    fs=1/ts;
    . r9 W8 i# G- y' d. O$ F$ sif nargin==2
    , ?# s$ d6 l& {" Q8 f2 V. j    n1=0;  O9 q8 X" M+ q* o; A" C! }
    else7 s& q0 @! m7 C9 P+ j
        n1=fs/df;: Z9 |6 o& q0 a6 {5 [: F
    end
    & W* p1 s) a$ I% I1 s& ^0 hn2=length(sfm);
    ; @6 s3 r* q8 {! tn=2^(max(nextpow2(n1),nextpow2(n2)));! x- t% O( |) I! h5 ]
    U=fft(sfm,n);
    ' C( l% G2 S( }, _6 ou=[sfm,zeros(1,n-n2)];5 X( R# q+ }( P# w% P2 x. x
    df1=fs/n;                                   %以上是对已调信号u求傅里变换" r9 J" b8 B& {3 S% `# G
    U=U/fs;                                    %缩放
    # t' T; {( r7 H* S, _%******************************************1 v  H3 U; d( I! }9 e
    %*****************************************
    . K5 |2 {( S: w+ u* c. {%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    / _4 L/ [& ^* Q# D$ Q0 Y%***************显示程序******************
    % X% `* T6 N2 o4 ^. L' P% `disp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')
    ) B/ a$ X* N9 t. K1 q: d/ O) [pause
    ! s! R& o) e' O%**************figure(1)******************
      b5 S. k4 A5 p, g  w  P. ~; xfigure(1)0 E+ ]+ H/ Y! m' ?* h
    subplot(3,1,1);plot(t,mt);                                 %绘制调制信号的时域图- I7 p4 L6 h4 ^8 P3 Q3 A) r  H6 p  `
    xlabel('时间t');( O, g( e& {3 _. w
    title('调制信号的时域图');# w( c8 H& b: J' d2 N4 I
    subplot(3,1,2);plot(t,ct);                               %绘制载波的时域图
    ) \4 H- c" t2 D; x7 Bxlabel('时间t');: `2 v* ^" [) ?7 s
    title('载波的时域图');- I1 b8 `) o4 g9 Z* j
    subplot(3,1,3);
    9 J9 v5 D$ ^: O  N6 k. E# S1 Cplot(t,sfm);                                                  %绘制已调信号的时域图# Y; X! t+ y2 S# C, t' R
    xlabel('时间t');; \# D! u; E% B
    title('已调信号的时域图');4 W7 O5 G8 H% X: ~1 K: m
    %******************************************( @3 D! E) V4 l
    disp('按任意键可以看到原调制信号和已调信号在频域内的图形'); z3 _8 t! a. Q* D6 `
    pause4 M2 L! z0 ]) s+ \4 o+ L0 U7 n
    %************figure(2)*********************
    8 H" p- B! Y% J4 [. c8 h, Q" _3 jfigure(2)/ m& e9 g1 x0 V" C# g) l
    subplot(2,1,1)& ]4 b3 M: L& G# G" c; F1 u
    plot(f,abs(fftshift(M)))                        %fftshift:将FFT中的DC分量移到频谱中心
    1 ^4 V; ^! [6 Y4 f) H1 Yxlabel('频率f'). }' r1 t. y# Y! M
    title('原调制信号的频谱图'). D1 H+ ^) h% G
    subplot(2,1,2)
    6 l* {1 K% Y9 l  jplot(f,abs(fftshift(U)))- M, t2 A& I7 ~& d. e0 q
    xlabel('频率f')3 X; V- u1 s( ^
    title('已调信号的频谱图')* ]' U( p, I8 q0 ~- \! h
    %******************************************. @5 X1 H, L: z2 v
    disp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')+ W- [! `7 S8 z& {6 g
    pause
    5 [3 C1 P# \4 B" h! I7 K% Z0 P%**************figure(3)******************0 Y; A9 z5 `: E- ?% s
    figure(3)
    2 ^% o0 Y- o4 d1 x7 u3 Y6 r2 Isubplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图  y5 }( F. T2 w) ]
    xlabel('时间t');4 [8 z# o( i( R) B
    title('调制信号的时域图');7 M7 l, k$ {" Z; e/ e
    subplot(3,1,2);plot(t,sfm);                              %绘制已调信号的时域图; o6 T6 i* r" n  Z
    xlabel('时间t');
    1 ~& S' N* T" j4 s3 u- {title('无噪声条件下已调信号的时域图');
    & W: r- ]  M7 v# b1 Unsfm=sfm;                              / g$ f  s2 T1 ?/ p" T- A1 k0 l& q3 p
    for i=1:length(t)-1                           %接受信号通过微分器处理1 F0 V" z1 ~. G( d1 S( u, X/ B
        diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;3 G8 L+ t6 ~  y6 I
    end
    & r/ e: x7 |& s( Ndiff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)
    0 Y. M: A) G+ i7 t; {+ o" @zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;9 \  ?0 i8 Q0 r" J0 d9 W
    diff_nsfmn1=diff_nsfmn-zero;' R! g+ j" {2 Y$ B* U! G# Q# }3 T
    subplot(3,1,3);                             %绘制无噪声条件下解调信号的时域图
    $ G& o  f: y$ E8 }5 q7 ^" hplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');) u5 W# a+ H% J. S5 q- B
    xlabel('时间t');                          
    & G3 S4 L5 m# o) U1 O, D' P* Ftitle('无噪声条件下解调信号的时域图');
    2 E" E. |/ M4 _%*****************************************3 {7 I. b; N+ ?2 Y" y
    disp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
    2 y& g1 h. t% o( Rpause
    $ L( `; L, L" u! \* F( G%**************figure(4)******************
    + E7 @: Z+ F; \, H. Hfigure(4)3 z& t6 i. e9 H. M: B2 t
    subplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图7 \) z1 x- a7 K% u. ]0 Y! j
    xlabel('时间t');
    % A# B. a. ~8 f+ @4 t& ytitle('调制信号的时域图');
    ) k1 k- d+ L/ E/ ]' E% c( p5 u" Tdb1=am^2/(2*(10^(sn1/10)));                   %计算对应的小信噪比高斯白躁声的方差
    3 }+ j) A5 i9 ~% Vn1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声% m' [' o- i. q5 v
    nsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通, O7 p  W! p% g$ a
    %                      %过信道传输)
    5 T& }( a  W; i  K4 E- Ifor i=1:length(t)-1                            %接受信号通过微分器处理
      R0 Z# @- F- M" C2 n5 @& `. ?8 G    diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
    ! I7 f& E' \5 g. y/ Z5 n9 Q) Qend. P7 w; i6 R0 w% N0 c
    diff_nsfmn1 = abs(hilbert(diff_nsfm1));   %hilbert变换,求绝对值得到瞬时幅度(包络检波)
    6 K" d. d# `. L7 I4 p6 y( H, pzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    ; W* O  }  I; k2 b5 h3 wdiff_nsfmn1=diff_nsfmn1-zero;
    % a" i: L( Z8 \2 o1 K1 Ysubplot(3,1,2);
    " f2 ?8 m' p1 k3 G# tplot(1:length(diff_nsfm),diff_nsfm);      %绘制含小信噪比高斯白噪声已调信号的时域图
    1 e% T0 _3 c2 I- s$ ~* Cxlabel('时间t');: [* B* U3 d2 e% E
    title('含小信噪比高斯白噪声已调信号的时域图');& A3 b* h0 o$ f) M0 C# D! V' m' W- i& D
    subplot(3,1,3);                        %绘制含小信噪比高斯白噪声解调信号的时域图: j3 I' P. G2 f2 a  x, c5 d
    plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');# D. A$ C: v" a9 Q$ R
    xlabel('时间t');                          
    % A1 w: j3 F; u5 Rtitle('含小信噪比高斯白噪声解调信号的时域图');1 B- c3 e- c0 F+ V5 U7 [% m
    %*****************************************
    5 g" x4 f  W1 J$ b; xdisp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')1 z3 j8 [) B8 c
    pause0 V* B6 |$ Z* P& p) |: Y! m
    %**************figure(5)******************3 B* Q  A# A1 V
    figure(5)
    8 _3 H: o# V, [, |  J( H* I& Dsubplot(3,1,1);plot(t,mt);                                   %绘制调制信号的时域图
    " ~3 _, m/ ~. C+ Q8 K8 {8 ~; T' s1 X5 _xlabel('时间t');
    0 S" Q0 M) \8 a) S/ I8 B* Ktitle('调制信号的时域图');
    7 ~5 `/ q  O' a# }- odb1=am^2/(2*(10^(sn2/10)));                   %计算对应的大信噪比高斯白躁声的方差
    1 N/ j% D0 X$ v, l, en1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声
    7 R1 `8 o* d1 t& o* j0 a+ Gnsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通过信道传输)
    ' \4 A8 @. f, Y+ x- \for i=1:length(t)-1                             %接受信号通过微分器处理  }, a0 ^' f. s3 s7 f
        diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;. ~. \" {+ }9 X3 w# o1 U
    end: F* c" e+ x& Y) `% U
    diff_nsfmn1 = abs(hilbert(diff_nsfm1));            %hilbert变换,求绝对值得到瞬时幅度(包
    : ~, q7 s& M/ T: }- K1 j8 d%                      %络检波)- m# A% p% `# `' O
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    ( h. B6 O3 N, b) \. [- e, Ddiff_nsfmn1=diff_nsfmn1-zero;; |" F5 U, i% a
    subplot(3,1,2);! C- ?# P# e( b4 C$ `
    plot(1:length(diff_nsfm1),diff_nsfm1);             %绘制含大信噪比高斯白噪声已调信号
    3 T& N- q% z' I) S2 W%                      %的时域图
    ; i4 @) S5 R: T! Uxlabel('时间t');+ Y2 A# f6 p: G8 ^: m' f4 w
    title('含大信噪比高斯白噪声已调信号的时域图');
    6 L5 q0 Z- C, a6 u6 Q8 lsubplot(3,1,3);                                %绘制含大信噪比高斯白噪声解调信号
    . M$ C. ~0 o  `- J: `/ v2 K%                      %的时域图
    0 r3 d- d7 |7 H$ V8 F" K9 t! Kplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
    ' W6 e6 K; c* y% o8 T- jxlabel('时间t');                           
    5 k' K. `2 G$ ]title('含大信噪比高斯白噪声解调信号的时域图');7 }9 r, F& r5 Z4 _% h+ f2 X, f. ~
    %*****************************************
    , d2 I9 A/ _3 e% H%******************结 束*******************
    - S7 S4 N# l7 q8 r# C8 A2 h1 @+ [; y0 O* ~0 y

    + M$ t  c; E: t3 c( M- S5 I* V
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    李秋锐        

    14

    主题

    14

    听众

    76

    积分

    升级  74.74%

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

    [LV.4]偶尔看看III

    社区QQ达人

    * h) p- ]8 g) ^& m+ ^" c8 q5 A
    6 e/ ^9 B( F$ ~0 q

    % Q* u' h/ R; ]) Y。。。。。。。。。。。。。。。, q; S" p. N# z3 w
    & p2 Y$ p4 E+ L( N( T
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-4-10 00:24 , Processed in 1.738344 second(s), 58 queries .

    回顶部