QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2097|回复: 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) u" b: k  S" h/ z4 K% ]; E$ P
    %频率调制与解调的Matlab演示源程序
    0 E4 i8 p+ ^  C. @%可以任意改原调制信号函数m(t)
    ( d' s  _! b% ~4 X" @7 F%电子信息工程  杜怀超 091308305  9 @  l. @4 I& Z/ u5 Y
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    * C! a+ h& m3 E%*****************初始化******************
    $ V! E% K. _, Z& ]2 Recho   off      
    ; h! _( g" a+ W6 |* Z: vclose  all
    1 d1 `; l: l* fclear  all
    % U, P7 S6 z" |! Xclc
    4 h2 m! t2 p0 N1 M4 i1 X%*****************************************
    ! S; V7 V* n- \1 J' R8 J, m%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·! j, R' i5 p5 T$ g+ H$ a6 o# N
    %****************FM调制*******************% N  K1 R, U' Y
    dt=0.001;                                   %设定时间步长8 ~3 I4 D" I5 w& g: O
    t=0:dt:1.5;                                       %产生时间向量0 s6 G& u9 }1 x. H" a9 f/ g1 ^
    am=5;                                      %设定调制信号幅度
    & f& b1 t% [. n  Xfm=5;                                      %设定调制信号频率- }/ g% n* y3 w: I. @
    mt=am*cos(2*pi*fm*t);                        %生成调制信号. S7 Y2 A+ h/ [3 T) k+ G. C4 l
    fc=50;                                      %设定载波频率
    : W6 Z" o/ A9 B+ K# ?2 K) J/ sct=cos(2*pi*fc*t);                             %生成载波% ]* ^2 p" O8 S7 p9 |7 D
    kf=10;                                      %设定调频指数2 h; D6 r9 ^1 o+ ?" F; W1 _
    int_mt(1)=0;; w- w7 z2 a+ k6 a: n) U
    for i=1:length(t)-1  ; F2 K; b' F' w8 S0 r  y
        int_mt(i+1)=int_mt(i)+mt(i)*dt;               %求信号m(t)的积分
    . E6 P% L6 M  G# y, S7 X  cend                                          %调制,产生已调信号2 o: j2 A  m. ?9 ~5 d8 j$ c7 o
    sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt);            %调制信号
    / @4 n+ G" A7 Q%*****************************************7 c! ]2 o! }, i
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·$ O8 D4 ?* x5 ^& y0 i
    %*************添加高斯白噪声**************
    2 h( L, b, F0 ~! C' y7 Ksn1=10;                                     %设定信躁比(小信噪比)
    9 O& G5 S7 R6 a* Rsn2=30;                                     %设定信躁比(大信噪比)
    5 v! T8 D/ D) Esn=0;                                       %设定信躁比(无信噪比)
    1 g4 q6 O1 t4 |; J0 K. B( ~db=am^2/(2*(10^(sn/10)));                     %计算对应的高斯白躁声的方差
    & }8 R5 q% E% R7 R! fn=sqrt(db)*randn(size(t));                      %生成高斯白躁声( l) C/ _5 ^) y. I3 h
    nsfm=n+sfm;                                %生成含高斯白躁声的已调信号(信号通
    2 V: j- N6 `- p6 J%过信道传输)8 M# e) S- `( Y: ?# e' L. d
    %*****************************************
    0 z3 ?8 O4 E2 L2 {' y%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·# b& N# n# b. E! a9 U5 A
    %****************FM解调*******************
    * ?1 E/ P, |# _: p9 z, Y! efor i=1:length(t)-1                             %接受信号通过微分器处理
    8 P5 h0 `% }9 A8 K7 R9 |    diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;" o) L0 K( X( i" Y1 \
    end
    2 E% D8 h, S/ R- w3 A+ r) F+ tdiff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)
    3 R& X6 ]: C2 T. B' Szero=(max(diff_nsfmn)-min(diff_nsfmn))/2;7 H# J( F2 s, s8 {- i& ]) M6 c
    diff_nsfmn1=diff_nsfmn-zero;7 u6 d6 b# n, y/ U& t3 ^% A9 x' v1 Y
    %*****************************************9 p5 R7 r, O9 n; u0 R
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    4 T: z* Z6 i+ c, |7 g. f" g" i. b%**************时域到频域转换**************
    ' A' J+ W7 M. ]5 W- T5 L2 c7 Yts=0.001;                                    %抽样间隔) G& m9 D, A$ C. @* Y# H* x
    fs=1/ts;                                      %抽样频率
      O( w/ D* m: B' O& Jdf=0.25;                                     %所需的频率分辨率,用在求傅里叶变换
    - n; H- T+ L9 h- ~+ j%                      时,它表示FFT的最小频率间隔0 o2 F0 u5 t: D  b7 [, n5 h# |$ {7 A, t
    %*****对调制信号m(t)求傅里叶变换*****
    ( B% R: ?! _. H; Hm=am*cos(2*pi*fm*t);                         %原调信号! _. M0 f3 u$ S$ V
    fs=1/ts;
    ( ?* @! @. I0 I/ O3 m' sif nargin==2
    3 a4 ~5 n& `/ |, C- p0 r: E    n1=0;3 P1 r8 A+ n5 Q+ z* A% k+ z4 X3 N
    else3 B3 |/ l$ G! \3 \8 s8 m& l& A8 i
        n1=fs/df;
    - L8 |8 e+ o* Z" X7 iend
    * L$ ?2 L5 M& v' ]n2=length(m);
    6 g5 B0 S7 p+ F- \% y4 w. Sn=2^(max(nextpow2(n1),nextpow2(n2)));
    ( B' k% ], m$ x8 MM=fft(m,n);; \$ f: A2 g/ n: k
    m=[m,zeros(1,n-n2)];
    - |' K+ ]# t: }6 h5 ]df1=fs/n;                                   %以上程序是对调制后的信号u求傅里变换& V. N6 H+ z- n/ A
    M=M/fs;                                   %缩放,便于在频铺图上整体观察% ^/ ]) X7 T. _* w6 q5 d
    f=[0:df1:df1*(length(m)-1)]-fs/2;                %时间向量对应的频率向量: y& _! x: t) J2 v* p4 ?; S1 I
    % c4 s- M9 L4 N7 z1 n* o$ n& P8 B
    %************对已调信号u求傅里变换**********' l$ Q: C2 N8 _
    fs=1/ts;
    3 C$ x% }% d$ y! K/ L0 c: G" {5 w6 ~if nargin==2
    ' u) c. g7 r+ Z' m+ c+ z3 R- l' r    n1=0;; O/ i% f$ o$ X4 K
    else
    ' H6 C8 X# t8 b9 U    n1=fs/df;
    : F  r- B& q$ M& N: S/ }end
    ! ^& g, g7 Y- e& Fn2=length(sfm);& w4 S; Z1 X4 V/ L
    n=2^(max(nextpow2(n1),nextpow2(n2)));4 i% b7 e5 Y/ o6 H. w' |5 b1 @" _9 ^
    U=fft(sfm,n);7 `- [, ~$ e. T- ~
    u=[sfm,zeros(1,n-n2)];
    / @& R: u/ f/ o% b' h8 {df1=fs/n;                                   %以上是对已调信号u求傅里变换" ^! z. j" P) j9 d# ~  {/ n
    U=U/fs;                                    %缩放
    0 R. z4 O. U8 j% x3 W6 t%******************************************: x$ P' [  {) x; m
    %*****************************************+ x4 k. b$ `7 w% L8 P9 T: @9 S) t9 k
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    9 o% z" y) f  u, c% @8 A%***************显示程序******************2 S! K& e( x9 w4 E$ O: i% I
    disp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')
    * P# A2 m0 o6 N. _, C* _+ rpause  N- q3 c- U% a, `
    %**************figure(1)******************
    ! ~8 D1 Z$ h# n& V5 rfigure(1)
    " I& c* e8 w' ~( h- c  h3 Dsubplot(3,1,1);plot(t,mt);                                 %绘制调制信号的时域图
    ) b0 ?: Q# A( e9 g- A% d8 sxlabel('时间t');
    0 `, f5 @+ v1 M7 ~9 ntitle('调制信号的时域图');
    $ L: S6 l% ]* \9 {: N, B5 J3 j& lsubplot(3,1,2);plot(t,ct);                               %绘制载波的时域图7 e( I- |9 y$ M( r2 k
    xlabel('时间t');
    ! i( d4 Z5 `: U9 Wtitle('载波的时域图');% W! \2 n8 \% v# F; {  d, A
    subplot(3,1,3);
    1 k5 G& e* n% X; w, f7 Cplot(t,sfm);                                                  %绘制已调信号的时域图) m! b+ v. U! S& U4 X
    xlabel('时间t');
    3 k2 {+ R% j# R8 h: S4 Ztitle('已调信号的时域图');
    " T3 ~5 y* }; C  ^( T%******************************************
    1 Z2 x, N+ U* ]0 E& G" E) cdisp('按任意键可以看到原调制信号和已调信号在频域内的图形')% R6 q) R& e5 d: w2 V* _+ e
    pause
    % {8 Q6 K4 u2 s3 i# e. r%************figure(2)*********************2 a7 T- _, f' E" u& o% g) c$ a) X
    figure(2), v1 g& K- P* r+ ~! l6 B& G5 o. x
    subplot(2,1,1)5 r% ]3 g$ H2 w8 F; J
    plot(f,abs(fftshift(M)))                        %fftshift:将FFT中的DC分量移到频谱中心8 x3 s( L7 L8 U& L: P
    xlabel('频率f')0 ^6 o0 j* g3 H; d6 ?7 ?
    title('原调制信号的频谱图')
    ; [" v+ _6 ]5 N  {1 Dsubplot(2,1,2)* d1 p7 T' h$ e6 @' A
    plot(f,abs(fftshift(U)))6 r4 z0 W5 d3 C/ t8 q
    xlabel('频率f')& T+ m7 \* @3 J! Z9 a. Q
    title('已调信号的频谱图')
      W4 n& [5 P% R%******************************************# \0 [6 w% @  n# Z# x) d
    disp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')
    0 w+ n& v9 X5 e7 ~  \" Jpause6 t' Y7 L' \# |5 C# U  G# m
    %**************figure(3)******************
    9 j0 O3 U, l, W3 W: H6 q2 U. }figure(3)
    ! y% H# J0 o6 e" @$ Msubplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图
    ; ^$ C1 J3 @4 A8 |+ N! p, fxlabel('时间t');
    . N0 T! e' p& {# Ntitle('调制信号的时域图');
    ' }. _2 M) c0 Osubplot(3,1,2);plot(t,sfm);                              %绘制已调信号的时域图
    5 f( W* r& S8 v, kxlabel('时间t');& ]$ l0 U8 @" N. P# s7 ^
    title('无噪声条件下已调信号的时域图');" h6 D: C7 m5 [0 ]' V; Z; T9 l
    nsfm=sfm;                              
    % @8 F3 {4 Z! f5 nfor i=1:length(t)-1                           %接受信号通过微分器处理7 v( V& ^3 e2 S: l' x- t2 r
        diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;" D4 v, K  `' i% V- ^3 w) p9 n9 O1 g+ y
    end+ c( i" L: D4 O
    diff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)
    1 _7 }" A( r4 r, Z2 U( |* gzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;) X4 T7 W6 S1 k( u  S
    diff_nsfmn1=diff_nsfmn-zero;5 R4 C3 u) \0 y" Y, t" q' j7 S6 q) c
    subplot(3,1,3);                             %绘制无噪声条件下解调信号的时域图+ r# e+ H% g0 C% ]# Z' A
    plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
    0 B! V& s1 b  e3 `) M5 ixlabel('时间t');                          . r; S' X& A" Q) F9 U
    title('无噪声条件下解调信号的时域图');
    0 X, u5 J$ ~3 F8 y2 a) w, w- _%*****************************************2 g5 X1 R/ h* m
    disp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')% ~8 ]1 L" S% O6 M0 c2 g" X$ p
    pause1 M6 i' J. [% @4 e3 p* k# y
    %**************figure(4)******************% }; H, M1 M1 z3 `
    figure(4)
    ) Z7 a) R; O# Y; q) ]  b0 e, ~subplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图
    2 f$ _; s! Y* k9 x+ ?# \! C. Kxlabel('时间t');9 {2 J( w8 d' W
    title('调制信号的时域图');
    7 D) T. Q/ I, D' L9 kdb1=am^2/(2*(10^(sn1/10)));                   %计算对应的小信噪比高斯白躁声的方差
    9 S& @+ k* u8 M9 j4 g& Jn1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声
    ' {9 C/ Y5 b; {: Y" gnsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通
    9 ]$ |5 {& X# r4 K: o1 E%                      %过信道传输)' y( n) W$ C! O- T
    for i=1:length(t)-1                            %接受信号通过微分器处理- P& ^) i" V8 W8 t0 }
        diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;3 D& ?- ^" V# U% j5 e
    end
    0 B$ p) f1 j* `: Z5 @- Qdiff_nsfmn1 = abs(hilbert(diff_nsfm1));   %hilbert变换,求绝对值得到瞬时幅度(包络检波)
    9 ?$ h. f( k! d" r7 }zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    $ W8 a8 u: W) q* s9 n/ k0 Jdiff_nsfmn1=diff_nsfmn1-zero;4 n5 L% N  ^. Z7 `
    subplot(3,1,2);
    * E3 X3 V4 C( y& V- V  Qplot(1:length(diff_nsfm),diff_nsfm);      %绘制含小信噪比高斯白噪声已调信号的时域图/ o0 Y4 A# A) D# S% z
    xlabel('时间t');1 r1 ~0 F5 J9 J+ J9 J; B* J3 z$ a
    title('含小信噪比高斯白噪声已调信号的时域图');, c( w& b8 u' U7 q
    subplot(3,1,3);                        %绘制含小信噪比高斯白噪声解调信号的时域图
    $ Y4 b. N8 x4 {plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');2 x9 z, |) E: R7 T
    xlabel('时间t');                          
    " x- x% t9 K, n: o+ y0 b2 mtitle('含小信噪比高斯白噪声解调信号的时域图');: `' L' X! R, p
    %*****************************************
    ) F) o+ ~, H- c& \. k0 R7 Hdisp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
    ( Q& I% A" x/ t2 q/ r/ p3 e5 Qpause
    & D" y9 m4 ~4 S%**************figure(5)******************
    6 [/ v. G0 r" d1 mfigure(5)
    . _+ H8 Y' c& G- b9 M+ F* c8 _subplot(3,1,1);plot(t,mt);                                   %绘制调制信号的时域图* {8 Z. W1 I. `* Z/ F
    xlabel('时间t');
    - T- s' I$ w0 I* Ytitle('调制信号的时域图');% k  @+ }4 n* |) \2 M
    db1=am^2/(2*(10^(sn2/10)));                   %计算对应的大信噪比高斯白躁声的方差
    ( Y$ M5 {# q/ _n1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声
    " z4 M, f+ ]  _4 k5 d3 {nsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通过信道传输)
    ! z( q& L! l! `  s( Ofor i=1:length(t)-1                             %接受信号通过微分器处理
    ) m7 o: f2 @4 F: K1 y) X    diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;4 s) e6 |& u) R- I% x5 n6 u! A
    end
    5 r# M* f! j# k. j3 Mdiff_nsfmn1 = abs(hilbert(diff_nsfm1));            %hilbert变换,求绝对值得到瞬时幅度(包
    - e, q2 q  S# R- h%                      %络检波)$ ~' R' _* w( P% I9 `* g, T. Y
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    4 k) T' l- b" r9 i2 G' N. w. N4 @diff_nsfmn1=diff_nsfmn1-zero;
    ' J- t. x# }( K; x4 ]subplot(3,1,2);3 L: F, p! z: f) O
    plot(1:length(diff_nsfm1),diff_nsfm1);             %绘制含大信噪比高斯白噪声已调信号
    4 E! c, }% t! a: [( g2 O%                      %的时域图
    . d. @7 h4 n* y: m3 C% zxlabel('时间t');8 l* x% y* ~' [, ^4 t
    title('含大信噪比高斯白噪声已调信号的时域图');
    6 R3 L+ K% e. l  o# I: Ysubplot(3,1,3);                                %绘制含大信噪比高斯白噪声解调信号
    / g3 ^! V4 Z* x' E+ r6 z+ D. h%                      %的时域图8 I' q' ^3 O( x7 d
    plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');% n6 H" g$ X6 T! i1 ^' ~* L
    xlabel('时间t');                            - y+ ?* e0 H5 K: |9 i8 ?
    title('含大信噪比高斯白噪声解调信号的时域图');- i* E! d7 f0 y/ u5 z) z3 W7 H* ~& O
    %*****************************************% V: }* Q0 [. ?, q- |3 _/ D
    %******************结 束*******************, W- Z" j7 V3 ~# d
    ) z; ?6 c1 `9 b6 U$ [6 _2 G
    ! X' R; `% v$ ?$ k/ n8 G5 M2 l0 f
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    李秋锐        

    14

    主题

    14

    听众

    76

    积分

    升级  74.74%

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

    [LV.4]偶尔看看III

    社区QQ达人

    . ?7 [( Y% s0 ~! ]* S4 ?

    7 G( v0 {6 `9 Z: t. X9 T  S, d, s1 T5 D* a
    。。。。。。。。。。。。。。。4 J, T& U) a3 u7 m
    9 g# o2 w$ M' ^+ t( M" P! [
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-4-16 16:34 , Processed in 0.519015 second(s), 59 queries .

    回顶部