QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2132|回复: 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
    * p- K% }7 {( ^* C, v$ W9 L%频率调制与解调的Matlab演示源程序
      F- m/ H* |1 m%可以任意改原调制信号函数m(t)
    & W2 q$ _. n% i6 |8 W' k0 u" j%电子信息工程  杜怀超 091308305  * A7 h, y5 C% ]3 P& j% f/ P. n# C
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    ) T. H7 s; r& ?& g: U3 @6 z' z' R% D%*****************初始化******************
    / ?/ U/ {8 r: c7 f7 @  Eecho   off      
    % t/ N& f7 ?+ G6 R, u3 e; Gclose  all3 @1 J3 P# B: r- P& Z2 d" P1 d+ b) p1 H
    clear  all5 H$ }7 U6 O8 G# C- F5 P4 c
    clc
    * f6 x8 I. j3 l% {7 o%*****************************************
    % c. k- s* t" _: _" j%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·: L2 C( I! G9 z2 G
    %****************FM调制*******************" M& a# U8 ^% K$ `- X6 \" L
    dt=0.001;                                   %设定时间步长0 k! l3 Y1 {. ^
    t=0:dt:1.5;                                       %产生时间向量
    . G; K  T8 O  t7 G* [+ nam=5;                                      %设定调制信号幅度
    " H. [1 v6 l3 K% t, P, f( Efm=5;                                      %设定调制信号频率% r  o- K9 l$ w8 G
    mt=am*cos(2*pi*fm*t);                        %生成调制信号
    1 O+ c1 M  Y8 N) W6 |fc=50;                                      %设定载波频率  C. w! J; {& G& z
    ct=cos(2*pi*fc*t);                             %生成载波9 x- t7 P2 V5 C3 e9 C. f! t
    kf=10;                                      %设定调频指数
    . X9 t& w1 u2 Z! g- q1 Lint_mt(1)=0;
    6 B  k4 [  {: Bfor i=1:length(t)-1  - Q3 n$ E$ `) L* q3 w
        int_mt(i+1)=int_mt(i)+mt(i)*dt;               %求信号m(t)的积分
    4 C. n7 a5 |, F9 ]! M  K% J' Eend                                          %调制,产生已调信号9 }/ m- D4 g# i
    sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt);            %调制信号1 b3 u3 Z/ E9 O; f* Z
    %*****************************************+ x2 Z0 S1 f  [, z6 E. L
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·1 ], j" W$ a  a5 V  u
    %*************添加高斯白噪声**************
    4 h4 [0 Y' e# m6 {4 Z% Lsn1=10;                                     %设定信躁比(小信噪比)
    " D; L$ |3 q# Y1 l( f# B6 F7 e' N' Jsn2=30;                                     %设定信躁比(大信噪比)
    ' T/ X) m  {& p9 d: E. _1 \& {' tsn=0;                                       %设定信躁比(无信噪比)) C( D9 N( d9 O! t0 S: ~& y
    db=am^2/(2*(10^(sn/10)));                     %计算对应的高斯白躁声的方差& N7 w* n. V  E9 i, \7 D4 _9 a
    n=sqrt(db)*randn(size(t));                      %生成高斯白躁声
    - K* Z9 B* c& tnsfm=n+sfm;                                %生成含高斯白躁声的已调信号(信号通
    5 q" S2 _, x- f' j& P8 {%过信道传输)* j, |" t) {; c/ F1 @
    %*****************************************
      K2 p3 Q/ A" l4 E! K  s4 a8 L%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    " D) o; e& N$ v& x' _% V/ y%****************FM解调*******************
    : i* H4 n  x$ d4 ?/ Wfor i=1:length(t)-1                             %接受信号通过微分器处理7 @/ E, F0 ^( [4 m: g
        diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;) |' w3 g% V: s5 K* h/ H+ u! [
    end9 Y/ e2 c7 d# Z5 |
    diff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)6 m2 b0 b/ c3 q4 \4 {
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    7 R- ^8 d# S  \7 y; u2 bdiff_nsfmn1=diff_nsfmn-zero;4 e& P) P/ }% @5 I' m" Z
    %*****************************************  E+ O" j% O% i' F, g
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    ( `; [# i/ a3 s6 F9 G7 k- d%**************时域到频域转换**************
    , ]9 {, k+ P; d8 }+ G8 o1 @0 ^ts=0.001;                                    %抽样间隔
    . H8 X8 f; y, C9 a0 H; W& C! Kfs=1/ts;                                      %抽样频率# d, v6 O- N8 O: t# G+ a
    df=0.25;                                     %所需的频率分辨率,用在求傅里叶变换. _5 w5 [+ u9 F% |* W: E
    %                      时,它表示FFT的最小频率间隔, i/ Z) X& ~% ]  g# f2 T* I) D
    %*****对调制信号m(t)求傅里叶变换*****% H( ?. u* p9 a( ~  x/ G- h- O/ X. D  x
    m=am*cos(2*pi*fm*t);                         %原调信号! U6 l! z0 ^$ P
    fs=1/ts;6 N6 q' K* E/ U# A3 R! ^4 A
    if nargin==22 c1 w* g2 `' m# z
        n1=0;& V1 }/ G. Z, q- ^9 u$ h+ e
    else/ U5 o8 o0 i' D1 }
        n1=fs/df;
    6 y) H) F6 I% X  ~& `$ mend1 E7 B; F! c  Y/ J: g6 n
    n2=length(m);
    + M/ x$ L. I: F( {$ k0 ln=2^(max(nextpow2(n1),nextpow2(n2)));3 u8 _: O1 R' @/ U
    M=fft(m,n);) l5 a% Z0 ?" q6 |+ {+ M
    m=[m,zeros(1,n-n2)];
    * E" `% w1 ?8 @, C) W8 |df1=fs/n;                                   %以上程序是对调制后的信号u求傅里变换/ X; u) z4 B* N% N: J
    M=M/fs;                                   %缩放,便于在频铺图上整体观察
    # t: \9 d$ v6 J* If=[0:df1:df1*(length(m)-1)]-fs/2;                %时间向量对应的频率向量2 s& |0 k; e. c# H# ^/ ~
    9 \( f3 }) p& b" ?6 {! [" L, ]0 e
    %************对已调信号u求傅里变换**********
    : t7 ]" Y8 p( a  c9 e; B8 Y8 w) zfs=1/ts;
    . p, h8 P+ g7 o7 K' c, W9 [  ^if nargin==2
    & ]7 l* V: c- R6 n$ ?) X. S$ T0 n    n1=0;
    & w) W, f- s" }6 Y/ Kelse- q6 e' d+ a7 T" W* s3 W
        n1=fs/df;
    ) Z. s- e7 C% eend
    1 n& c$ x; g( W5 l, V. \n2=length(sfm);
    4 m0 A, k' A- z' @% E: z: xn=2^(max(nextpow2(n1),nextpow2(n2)));
    ' z: q* T0 U& E- @! C# KU=fft(sfm,n);: B: Z  S4 p1 l& h3 v* U
    u=[sfm,zeros(1,n-n2)];* m# L1 g7 a! d' b
    df1=fs/n;                                   %以上是对已调信号u求傅里变换
    . J! Y- E* z' ?! _% KU=U/fs;                                    %缩放
    ( {5 [, `/ D5 S* W' A6 d%******************************************! }( T  [( Q& X; A
    %*****************************************8 H: W* c" @0 {" R
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·3 ^& a+ R" D: w( O, p
    %***************显示程序******************
    / }( [3 T! t$ N- idisp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')
    # x% F  Q9 n1 W; ^8 {2 {% ipause
    8 n: j) m: C# G8 r%**************figure(1)******************4 l% j" D. {( m% f
    figure(1), I/ H+ A) W# ~0 R
    subplot(3,1,1);plot(t,mt);                                 %绘制调制信号的时域图
    1 A- ?2 M0 L; f! G# Z, _  L8 mxlabel('时间t');
    $ v, F6 W7 b) S" ]( etitle('调制信号的时域图');
    ' A% N7 G9 G2 v+ |; e- \subplot(3,1,2);plot(t,ct);                               %绘制载波的时域图
    0 |# y7 [% J5 A8 s1 Vxlabel('时间t');+ g( m% k8 s7 l% c& H
    title('载波的时域图');1 [+ |: e. N/ p! P
    subplot(3,1,3);
    3 g! _# Q- K% v0 X1 w5 `" splot(t,sfm);                                                  %绘制已调信号的时域图
    ; I  T, e; }, Z+ I1 ]xlabel('时间t');! d! ~# R5 Z: @2 `+ a  [: s
    title('已调信号的时域图');- a/ ^* @# S+ @* h
    %******************************************
    $ t- z: j0 A' o& h7 Sdisp('按任意键可以看到原调制信号和已调信号在频域内的图形')# R5 a4 C* L, o6 O. ]) X- T0 E
    pause
    1 X2 ~" i6 a9 F: S8 Y%************figure(2)*********************; W0 t  P4 E+ V6 R* b
    figure(2)
    0 Z- J7 C5 B2 ksubplot(2,1,1)8 h$ @) h& n* E% x: [7 ]* y1 |
    plot(f,abs(fftshift(M)))                        %fftshift:将FFT中的DC分量移到频谱中心. _- }( j" r& b- d9 D* E( Y( c* e4 k
    xlabel('频率f')7 ?( q! M+ s2 Q
    title('原调制信号的频谱图')
    2 H' T3 e6 W5 J! [0 P4 l0 e3 ?+ Qsubplot(2,1,2)
    ( q# r  r3 W' L2 U) }1 I( F* x8 A% mplot(f,abs(fftshift(U)))
    0 \4 b- L  i3 M$ {8 k* Sxlabel('频率f')% O( t" r9 g: R. P; `: ?, K
    title('已调信号的频谱图')9 r( T# `. C6 L: e
    %******************************************7 o' M$ l0 I$ E4 S4 C
    disp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')! e& w* P( o1 i6 _, I  D4 v
    pause: h6 [; R' X& |2 K1 n- _/ v
    %**************figure(3)******************
    - v1 S7 L+ K6 D% `7 g5 [2 ~4 y1 Y: ifigure(3)* p2 p) M5 t0 f% o
    subplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图
    2 O% V+ T& O& r: V/ Vxlabel('时间t');8 L( d$ O% W. d1 _
    title('调制信号的时域图');* @4 D- w$ ^# t
    subplot(3,1,2);plot(t,sfm);                              %绘制已调信号的时域图
    : X, q9 l9 O2 M, u" `1 N& i9 `xlabel('时间t');
    $ d* Z. M# ^" O. m7 etitle('无噪声条件下已调信号的时域图');) `. f) S( k3 N; W
    nsfm=sfm;                              
    3 d2 ]3 I: P# M- h3 K/ G1 M# `for i=1:length(t)-1                           %接受信号通过微分器处理
    ! O0 c# u5 ~. f. Z    diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;, ]- [" ]# f. s: `
    end
    3 Z- N- M8 [- G3 s1 vdiff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波). q- B9 g. n1 B" I* q' W9 N
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;1 `9 y+ E9 A# x' `
    diff_nsfmn1=diff_nsfmn-zero;
    0 U9 S9 a6 X  u3 B, x% Y1 e2 vsubplot(3,1,3);                             %绘制无噪声条件下解调信号的时域图# ]' i: l6 T1 j
    plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
    6 }+ p# i- `# p! ^* q3 xxlabel('时间t');                          3 G8 f3 Y/ W, S% `) X+ G& E
    title('无噪声条件下解调信号的时域图');
    ( w7 D& T/ }, m5 v. f1 t8 J%*****************************************; G6 }# b) m9 o2 H( P- M
    disp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
    4 i8 B: W- D0 e) Y, G  d( q+ _# l9 qpause, s6 d, a  l. l6 F% D5 e
    %**************figure(4)******************
    ! [: G0 p% o; d- i0 Y: `figure(4)
    6 C# N) [. t- h9 m. y! [: }) @subplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图+ O: z, p! l7 M; o. }
    xlabel('时间t');
    : `9 Y) B8 G5 K. ^7 y6 Ktitle('调制信号的时域图');
    . B' I8 z% C' x. wdb1=am^2/(2*(10^(sn1/10)));                   %计算对应的小信噪比高斯白躁声的方差
    8 P! _) w2 I& a- Wn1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声, K7 N; T! L! R7 y; Y9 Z9 k
    nsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通
    5 h9 y7 v2 j2 q# R%                      %过信道传输)
    1 T: v0 r, q3 t8 ifor i=1:length(t)-1                            %接受信号通过微分器处理% B$ ?6 @( y  v. `( A+ ]/ z
        diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;: M" k8 A4 H  O5 ?
    end1 ^: w3 {5 S) b6 w/ W# j# ?( b
    diff_nsfmn1 = abs(hilbert(diff_nsfm1));   %hilbert变换,求绝对值得到瞬时幅度(包络检波)8 a& D: _1 ?+ H1 Y) L4 i/ t
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;  Z1 Z, H6 B9 _, b; M) G0 d
    diff_nsfmn1=diff_nsfmn1-zero;
    # x( \: e6 |3 r# Tsubplot(3,1,2);
    8 ^; w, H0 {1 _9 n& I% l' iplot(1:length(diff_nsfm),diff_nsfm);      %绘制含小信噪比高斯白噪声已调信号的时域图
    ( t/ C2 X! r: r. Oxlabel('时间t');
    ) M5 C2 U- r6 X# F0 stitle('含小信噪比高斯白噪声已调信号的时域图');! a7 u% f4 B* D' v4 e0 p
    subplot(3,1,3);                        %绘制含小信噪比高斯白噪声解调信号的时域图
    / O, ?" A: B/ ^- pplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');; p' M" Y0 Z$ R/ ]0 x! N9 `
    xlabel('时间t');                          
    0 y6 r/ [2 }# C5 Q2 stitle('含小信噪比高斯白噪声解调信号的时域图');0 d$ P( m$ s3 d/ T% w4 T4 l9 e& m
    %*****************************************
    % H  R; L" Y8 }6 m: Hdisp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
    5 W* g3 L) w! q% `pause
    : `2 y' C  T6 M( ^. U, h) T%**************figure(5)******************3 y+ ?2 s5 ~+ b
    figure(5)
    ( f+ j7 i# c, X" \6 esubplot(3,1,1);plot(t,mt);                                   %绘制调制信号的时域图
    1 |4 G% ?! M% f, Z; P' Sxlabel('时间t');2 F, f5 w0 t" }8 B: n
    title('调制信号的时域图');
    7 a1 e5 u) F8 ldb1=am^2/(2*(10^(sn2/10)));                   %计算对应的大信噪比高斯白躁声的方差( B2 D2 M1 M3 _' C9 r2 w
    n1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声
    ' g2 ~5 ~- l) K) t% qnsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通过信道传输)
    5 u: T8 l. W3 `% Zfor i=1:length(t)-1                             %接受信号通过微分器处理0 e% u! I0 B4 x9 N3 S3 P- \8 q( M  M
        diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
    * h$ c1 G; H1 I) L$ Bend
    - f3 o3 ]3 O; {1 G) s& Zdiff_nsfmn1 = abs(hilbert(diff_nsfm1));            %hilbert变换,求绝对值得到瞬时幅度(包
    0 ]9 X9 Q4 [8 v1 U$ Q%                      %络检波)8 k8 B% p* X- V4 @3 a9 n% D# x/ l6 g
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    ; i( k; |3 A. i- ^diff_nsfmn1=diff_nsfmn1-zero;: h: T! q) l* q5 W) T* e6 n' G2 j
    subplot(3,1,2);
    ( j/ h% m# F" i. c$ C  ~' qplot(1:length(diff_nsfm1),diff_nsfm1);             %绘制含大信噪比高斯白噪声已调信号3 J0 G) O6 H4 w" H5 t' g
    %                      %的时域图0 y+ g0 w' ?" ^7 m; S% y+ o
    xlabel('时间t');
    8 b) O6 w9 ]$ B( J1 otitle('含大信噪比高斯白噪声已调信号的时域图');
    ; I' {4 o  a. W+ W6 zsubplot(3,1,3);                                %绘制含大信噪比高斯白噪声解调信号
    ' [7 M4 T% @9 p' D%                      %的时域图
    2 Q/ }+ S8 c9 z8 M$ k* U6 jplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');1 [& w6 w* f9 C) p- `
    xlabel('时间t');                            1 F" P% m, _0 ~/ Y2 j
    title('含大信噪比高斯白噪声解调信号的时域图');
    3 j  [3 }$ f1 A# t! k%*****************************************
    ' H- t- `8 s1 R& g7 U: b%******************结 束*******************+ [4 `9 [- M+ g% B* J7 _3 u

    " Q: ^( @. V0 ?% O8 h4 N9 C; \) `9 }7 v% \3 [$ O& r9 A
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    李秋锐        

    14

    主题

    14

    听众

    76

    积分

    升级  74.74%

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

    [LV.4]偶尔看看III

    社区QQ达人

    + X+ W4 k6 {1 a4 e8 Q0 n
    7 @) y8 l. }: W1 U
    # r- f3 n7 M+ m
    。。。。。。。。。。。。。。。
    & j3 E9 Y/ L6 O$ D' P1 `% _' v% ]) v6 A: Z6 l* X
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-6-15 00:16 , Processed in 1.232971 second(s), 61 queries .

    回顶部