QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2168|回复: 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
    6 v" }3 @2 M( i9 @. i8 p( Q( W%频率调制与解调的Matlab演示源程序6 V. S) A3 L- j& j: U7 m
    %可以任意改原调制信号函数m(t)
    # Y! u- d! Z" R- `5 {%电子信息工程  杜怀超 091308305  
    : {& o, @" ~- F%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·( T+ h" v3 k2 c. u: O' C% E" X1 ]
    %*****************初始化******************
    / ]3 X$ [7 l- q- vecho   off      
    2 H+ k' ]# |1 J. y' m- K" _8 uclose  all8 w% [0 K7 E  p# N- n* x
    clear  all
    3 J+ ]! F  k; M5 Pclc; n' N3 a2 W: o) `; B/ y
    %*****************************************6 e+ O% F6 ?$ d8 n( _: i3 o0 R
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    8 p) X' F5 \+ d% B%****************FM调制*******************
    # c* F9 @* ]8 ?$ ~; m7 e8 L, Gdt=0.001;                                   %设定时间步长, \! `$ m) Z; ~: a8 g
    t=0:dt:1.5;                                       %产生时间向量
    & f/ }/ Z2 A; \6 H2 wam=5;                                      %设定调制信号幅度: x* @3 L, z8 l; `: g$ k
    fm=5;                                      %设定调制信号频率8 K. E6 Y7 O1 q5 ]
    mt=am*cos(2*pi*fm*t);                        %生成调制信号1 o  ~; |5 I# {; }7 r; [! f2 e
    fc=50;                                      %设定载波频率
    " S* h* U0 \; _ct=cos(2*pi*fc*t);                             %生成载波
    4 E3 ^) M* K. F, k7 p  Bkf=10;                                      %设定调频指数1 C  N/ M; T' T* @# z
    int_mt(1)=0;" |6 d$ o) i( W+ r- N2 a! k
    for i=1:length(t)-1  
    . i2 m/ m3 S. O# i/ y    int_mt(i+1)=int_mt(i)+mt(i)*dt;               %求信号m(t)的积分& i3 ?! i% q# ?9 I" `0 r
    end                                          %调制,产生已调信号% ~5 M4 B& I5 q+ `9 e) G
    sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt);            %调制信号
    $ E- ~' S; n8 o; @% ]0 g%*****************************************7 G( g/ K$ U; D& d" s5 u% s8 r4 |
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    4 y9 J- N- c& F1 ^, A7 M%*************添加高斯白噪声**************
    # w* L4 d" F; Nsn1=10;                                     %设定信躁比(小信噪比)( x* H7 h- H( J; k6 F9 N8 s
    sn2=30;                                     %设定信躁比(大信噪比)0 x1 s. t- B- i5 P, ^4 ?. [: x
    sn=0;                                       %设定信躁比(无信噪比)
    2 E! H, k! s- J% P, G7 D1 q+ Z: _db=am^2/(2*(10^(sn/10)));                     %计算对应的高斯白躁声的方差
    % b4 }! {# s4 [8 Y$ wn=sqrt(db)*randn(size(t));                      %生成高斯白躁声
    / p) i' |& W# J; ~8 G. l' G  a/ Ensfm=n+sfm;                                %生成含高斯白躁声的已调信号(信号通
    7 T' w! Y. T- D- A3 D$ H$ b' C+ s%过信道传输)
    # ]" z1 a- `  v# M, Q" b%*****************************************5 `) g0 S" X; n3 `# [) S
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    $ ?' Y3 {9 T: [# f+ J7 r%****************FM解调*******************, ?: V# L' X# ?$ y3 O
    for i=1:length(t)-1                             %接受信号通过微分器处理
    , S; @1 {- p5 y5 p- i' F    diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
    7 p# [8 m" r& u8 E6 i! i2 gend
    # p) A, }0 U2 \2 ^( s; hdiff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)  m' s# y2 F$ n
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    ( }' B# K9 B0 R% Rdiff_nsfmn1=diff_nsfmn-zero;9 \- d9 K" [9 x2 X1 W. Y0 p
    %*****************************************/ A- ?8 P9 G4 _, W# A- ^& @
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·% U  W6 T6 b- T3 w+ j
    %**************时域到频域转换**************9 {  O, G  j3 [8 b# W
    ts=0.001;                                    %抽样间隔( l/ ?1 G+ f; g* [
    fs=1/ts;                                      %抽样频率
    7 _: \, S3 v8 I- N' qdf=0.25;                                     %所需的频率分辨率,用在求傅里叶变换& T, d* b7 ]4 R, K* }
    %                      时,它表示FFT的最小频率间隔/ ?% j! E: d6 z9 ?$ ~' t9 h7 x
    %*****对调制信号m(t)求傅里叶变换*****
    * j' O8 R" b5 Z& c' Sm=am*cos(2*pi*fm*t);                         %原调信号
    ( p# _; H0 k2 ]fs=1/ts;5 o3 v' L: B% m
    if nargin==2
    + S! {' W" ^# f. z) @+ P4 \    n1=0;
    ) g' E! u" F( \  zelse7 e' B8 U3 V) [+ B
        n1=fs/df;+ ~+ T- \& |* T+ i* n  @4 [/ c
    end& r% l3 L  o5 p/ g
    n2=length(m);: E5 S9 j8 ]& k3 r0 L: u
    n=2^(max(nextpow2(n1),nextpow2(n2)));# t* o4 y$ s3 i  ?5 ^5 k
    M=fft(m,n);; D% g2 T- X; Z4 @8 |8 ^) i$ ~
    m=[m,zeros(1,n-n2)];
    3 _" A9 k& U+ ?3 Mdf1=fs/n;                                   %以上程序是对调制后的信号u求傅里变换
    ! Y  S( ]  m6 A4 H( _) rM=M/fs;                                   %缩放,便于在频铺图上整体观察
    2 k# S- m/ t. \0 h! N: a: hf=[0:df1:df1*(length(m)-1)]-fs/2;                %时间向量对应的频率向量
    : ?9 {1 W1 b3 y3 L1 E
    ( _5 d" E: y& O  O/ F%************对已调信号u求傅里变换**********
    * A4 @# `9 i8 Q/ ]7 [fs=1/ts;' F& U3 N4 Q: q- t+ _" k
    if nargin==2
      l0 n* b/ @- V+ X7 J1 I    n1=0;
    % q* i1 Q1 A) r& C  ?# telse2 G7 y7 z* A( S1 N! T7 ~
        n1=fs/df;7 y9 F  J, x2 V$ g" Z
    end
      ?* j+ I  |- g; N( s( R# I5 u" En2=length(sfm);
    , V' J$ o. u( X/ g3 Q8 A3 Dn=2^(max(nextpow2(n1),nextpow2(n2)));
    ( @7 p) u  n; d/ {$ U6 L; XU=fft(sfm,n);2 I: P# n  w3 L8 Q
    u=[sfm,zeros(1,n-n2)];: e% `  D1 h5 w  j' E0 V* L/ R+ X4 }
    df1=fs/n;                                   %以上是对已调信号u求傅里变换
    7 Z6 S' s) A: j/ A* s( xU=U/fs;                                    %缩放* U% B& v4 B9 I3 o( I# V9 _
    %******************************************- r& a7 \% ]; n* v2 z+ D
    %*****************************************
    * U' p. j% f4 u1 [$ C' P%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    ( P* D5 [4 V+ C%***************显示程序******************6 U: V$ [- c8 a3 z' E5 D7 o
    disp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')
      p; i5 a! r# h3 I  Y# R1 [pause9 q1 Z# i" V# A
    %**************figure(1)******************' @3 v* {' x1 i4 H6 Q
    figure(1)- w3 @% E) N6 S' Y* }; E0 S9 P' P
    subplot(3,1,1);plot(t,mt);                                 %绘制调制信号的时域图+ e# G+ L% h) \+ H# z$ R
    xlabel('时间t');
    + I- W0 m- z& [2 C9 {6 A( T3 Ttitle('调制信号的时域图');
    # g4 ^$ g; u- k: Ysubplot(3,1,2);plot(t,ct);                               %绘制载波的时域图
    4 M8 ^) f! G8 bxlabel('时间t');; a6 M/ \2 x) t* m
    title('载波的时域图');
    % V- L2 |2 S# \/ f: S7 |$ e, t) |subplot(3,1,3);  ^4 n- _8 h7 }$ \
    plot(t,sfm);                                                  %绘制已调信号的时域图
    ' r" j3 z+ n8 Y7 D2 A: \  Hxlabel('时间t');
    : U: Q; t8 r5 O3 m  ?! ]- R# K: P& Atitle('已调信号的时域图');: Y1 L: z: i/ d+ r, i
    %******************************************2 E; ^( O, a' T
    disp('按任意键可以看到原调制信号和已调信号在频域内的图形')
    4 R5 m; R5 ?# b8 ?pause
    ! u. p  G3 i  _. b. m%************figure(2)*********************
    ! [8 V& ~# c) e. x* g, A4 yfigure(2)
      ^: g  o- @! m; r2 B1 j7 L* psubplot(2,1,1)
    $ K  H1 l3 ~: Kplot(f,abs(fftshift(M)))                        %fftshift:将FFT中的DC分量移到频谱中心7 {  d9 A$ \/ Y" k6 p) t: o7 |2 R# Z
    xlabel('频率f')
    0 v; @8 X% U* a, ?7 r- j- Jtitle('原调制信号的频谱图')- Y5 a/ @9 q& N* }
    subplot(2,1,2)% m  u2 x8 z9 `0 R1 c1 Y
    plot(f,abs(fftshift(U)))) H5 b, ?4 O! G2 v( w
    xlabel('频率f')
    , B  J" P3 X, a7 Y6 e  N& f2 ~title('已调信号的频谱图')3 m" J/ j% J2 e4 g+ C
    %******************************************
    * {3 M1 d6 A- X# Z8 S% J- ^; c% N& u  Idisp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')
    1 {- v3 Z. `* xpause0 u! o8 ^% Q! [9 W$ W7 j
    %**************figure(3)******************. d: B! t( G9 P( R  ^% D- ~+ U7 H1 N
    figure(3)
    ) Y' v$ Z$ k; Ssubplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图
    : ?" O2 r& v/ @; k' Vxlabel('时间t');
    6 B/ f* i' [- |9 @2 ]* jtitle('调制信号的时域图');
    + k/ y2 r$ K  ~: I- ~$ Psubplot(3,1,2);plot(t,sfm);                              %绘制已调信号的时域图
    6 s+ e5 H5 m5 x( }' _xlabel('时间t');
    ( B: P1 F* M4 a8 U, xtitle('无噪声条件下已调信号的时域图');. L2 v* [; ~2 B# g6 B
    nsfm=sfm;                              / G1 n( O( k# g7 y! R2 {9 k. e
    for i=1:length(t)-1                           %接受信号通过微分器处理4 F9 J0 ~' u9 y: @
        diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
    : O. G& `) S* Z* Kend% \- E; V$ P+ D
    diff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)
    # M6 t: c& _: ^zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;0 P% x/ {/ l4 e! Y" S7 Q# a/ s
    diff_nsfmn1=diff_nsfmn-zero;. n2 w. O- c" R5 x. T, r
    subplot(3,1,3);                             %绘制无噪声条件下解调信号的时域图
    4 z4 f6 s( A3 v1 splot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
    " \/ [( p9 ]& q, O; F% q* B) Fxlabel('时间t');                          , _6 E* l2 s2 ?
    title('无噪声条件下解调信号的时域图');
    3 |' }& L% h+ H4 H6 R* U%*****************************************1 x" R: j, Z/ D- x" d1 U
    disp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')- E0 V3 N1 F  n% ^1 n
    pause+ c+ \4 t$ F" j% Y
    %**************figure(4)******************; q: w. R4 E4 X% _$ i0 w0 d
    figure(4)
    & K" Z1 z" d" W1 u9 f: {# bsubplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图3 f% z) q" X# o1 s
    xlabel('时间t');
    1 l' s$ i! x% ^title('调制信号的时域图');
    $ f6 G) d; c) ?  l- Bdb1=am^2/(2*(10^(sn1/10)));                   %计算对应的小信噪比高斯白躁声的方差
    # u) h; k8 P0 c, B9 Y7 en1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声
    % g" |' l0 a* G- ansfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通
    $ H5 m( ^# o9 {) A3 H: G" f%                      %过信道传输). i0 r, D2 t6 t4 O
    for i=1:length(t)-1                            %接受信号通过微分器处理
    % ?+ t/ g& Q. G/ i% h    diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
    : A" J$ ]4 j2 b8 I% q$ {* Dend0 E, W5 W* q0 i
    diff_nsfmn1 = abs(hilbert(diff_nsfm1));   %hilbert变换,求绝对值得到瞬时幅度(包络检波)
    + h0 x) U% a6 |/ x+ \/ Mzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;0 `  I' ]" X( A, M- g# [
    diff_nsfmn1=diff_nsfmn1-zero;
    - n( U3 w! f4 A. @subplot(3,1,2);2 [, j2 V" S! N" n
    plot(1:length(diff_nsfm),diff_nsfm);      %绘制含小信噪比高斯白噪声已调信号的时域图
    # l1 G* [9 Q/ m) lxlabel('时间t');4 Q! Q% g% y9 D2 }) m7 T
    title('含小信噪比高斯白噪声已调信号的时域图');
    . L" k' E) W% s; Z+ [! asubplot(3,1,3);                        %绘制含小信噪比高斯白噪声解调信号的时域图
    ( v1 \& J; K) Qplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
    + d* d/ z+ J) m  x: K8 zxlabel('时间t');                          3 w$ h! p/ T  @% E+ R
    title('含小信噪比高斯白噪声解调信号的时域图');
    5 a4 b0 e* E% p( n- R+ R6 y) q3 `  U%*****************************************+ }# C0 l% B9 F0 B  F
    disp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
    ' f5 W: ^. C& @4 ]pause
    ' G' B, M2 H! |; G4 u) a* `3 Y%**************figure(5)******************
    ) [/ i7 ~' C) R( I/ |figure(5)
    + v( d+ D) J! H. V. Psubplot(3,1,1);plot(t,mt);                                   %绘制调制信号的时域图
    / h% N( {, }* ^xlabel('时间t');+ u) p4 G3 k* ^
    title('调制信号的时域图');) J/ k4 v, p; L7 J* |- z& B
    db1=am^2/(2*(10^(sn2/10)));                   %计算对应的大信噪比高斯白躁声的方差
    : f7 r. L5 m7 B, y; O4 in1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声
    ; K5 h5 F5 z/ fnsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通过信道传输)
    2 U+ s, w2 y* f' D4 F" efor i=1:length(t)-1                             %接受信号通过微分器处理
    5 j/ A( @2 v  g3 j6 L7 f8 |    diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
    - P2 Q$ k* l2 n9 eend
    6 T* \& W( p6 }7 ~4 O4 V6 adiff_nsfmn1 = abs(hilbert(diff_nsfm1));            %hilbert变换,求绝对值得到瞬时幅度(包8 f, K6 T4 q9 S- P- x
    %                      %络检波)
    ' z- `% b4 \, R: P9 B1 F& J* ?zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;, w; |6 d  P; g8 o' c4 ]& f
    diff_nsfmn1=diff_nsfmn1-zero;
    0 F+ K9 z2 S6 |( isubplot(3,1,2);
    7 {! `( h$ C4 a8 Lplot(1:length(diff_nsfm1),diff_nsfm1);             %绘制含大信噪比高斯白噪声已调信号
    1 E  i* p  N' U) `%                      %的时域图% o3 e" z2 {  @0 P8 l
    xlabel('时间t');8 o5 `2 Y- _: v8 e6 A+ b
    title('含大信噪比高斯白噪声已调信号的时域图');$ v9 C, a% {5 t8 U- i* H
    subplot(3,1,3);                                %绘制含大信噪比高斯白噪声解调信号
    1 @6 T( z  I& D7 D4 p6 ?%                      %的时域图
    5 K1 ~) ]7 y& ]) m) Qplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
    ' ]& `4 x' M- @% `7 v' l! J9 Txlabel('时间t');                            8 X. W6 t8 }3 r' U* M
    title('含大信噪比高斯白噪声解调信号的时域图');
    ) a# i- O# n* _8 h%*****************************************; b* G" t1 X/ _( M
    %******************结 束*******************4 x! H, ^" u3 q
    - i* e0 ^1 w9 J- G8 c* s+ s
    : L' z+ [2 `' g6 i
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    李秋锐        

    14

    主题

    14

    听众

    76

    积分

    升级  74.74%

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

    [LV.4]偶尔看看III

    社区QQ达人


    ( H' v8 ~# f! o  [
    5 Y3 C( [! S- j, D* r0 y! z0 B" c& X
    。。。。。。。。。。。。。。。
    " {, I) [+ \# i0 L. ^( M; d0 t" g1 h6 B4 t& V8 X8 P
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-7-31 21:17 , Processed in 0.356376 second(s), 58 queries .

    回顶部