QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2096|回复: 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+ C) E' S, V4 o! v, Q5 @2 Q" m( i) y  ]- Q
    %频率调制与解调的Matlab演示源程序
    ! D( d0 k' ^; s$ s% Y%可以任意改原调制信号函数m(t)
    2 }- A/ ?$ e, P%电子信息工程  杜怀超 091308305  
    * |+ u* n: G$ i5 V%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·2 l/ V3 Z: F( R
    %*****************初始化******************
    * n& K2 C9 G- o8 m' Z& techo   off      
    . j9 s5 b8 @" Y7 d1 |1 ~! z  Zclose  all9 }6 r/ |8 J! T; Y  `% [( q
    clear  all
    2 o* e2 L4 h- a+ H/ |clc$ a# C( Z8 U& _
    %*****************************************
    . r- \" a% p$ [: x3 I6 E/ [1 B%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    4 V( N- U+ e2 Q4 \/ f1 W: G%****************FM调制*******************9 `( [; q! @; e$ E! G  k) O
    dt=0.001;                                   %设定时间步长2 R0 U/ H2 w2 u" H6 k
    t=0:dt:1.5;                                       %产生时间向量
    . m5 U- [, y; G! kam=5;                                      %设定调制信号幅度5 M& c* [, X7 _$ `! C- p" h1 O0 i4 D
    fm=5;                                      %设定调制信号频率
    0 |8 s  Y- b! W1 g7 qmt=am*cos(2*pi*fm*t);                        %生成调制信号
    5 o& v/ d5 v! V8 }" Rfc=50;                                      %设定载波频率
    7 Z8 G+ [) ]4 ?+ g4 O2 V+ @ct=cos(2*pi*fc*t);                             %生成载波
    " J  n) w# R1 P, S% [0 rkf=10;                                      %设定调频指数
    " ^+ G% M$ M$ L% S7 l+ u( Aint_mt(1)=0;
    $ J. M* r6 c( M0 E- c8 Ufor i=1:length(t)-1  ' f: \# g) y9 i9 b) L
        int_mt(i+1)=int_mt(i)+mt(i)*dt;               %求信号m(t)的积分
      b) X( G% ^" y: `( t8 \; s) zend                                          %调制,产生已调信号
    / U% w; F3 r0 D: t. l, m' s5 y! ^sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt);            %调制信号
    * [: C; y' r4 O+ X%*****************************************  v# x+ T1 f3 l- N( O. ?; l) v
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    % h# P, K8 X. y8 m; E%*************添加高斯白噪声**************3 t  w+ K+ s# @+ f4 w
    sn1=10;                                     %设定信躁比(小信噪比)6 H  w/ @& l% z2 |
    sn2=30;                                     %设定信躁比(大信噪比)
    ) [# C$ y# t1 qsn=0;                                       %设定信躁比(无信噪比)/ Q- `: h9 p+ j$ j2 U
    db=am^2/(2*(10^(sn/10)));                     %计算对应的高斯白躁声的方差( [( U+ e5 q# O( o: s4 S
    n=sqrt(db)*randn(size(t));                      %生成高斯白躁声
    ) n, u& f/ \$ g2 |$ `nsfm=n+sfm;                                %生成含高斯白躁声的已调信号(信号通0 \0 {1 o- _# M: n7 _. m) |
    %过信道传输)$ x- j& m% ?: V* h; D
    %*****************************************6 B* x. u* O! J: X
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·+ d1 ^* n* C; z, u. Y! f
    %****************FM解调*******************% ^6 x+ y5 f0 A9 I% F6 e
    for i=1:length(t)-1                             %接受信号通过微分器处理8 {* a' b- J! Q( d: }
        diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
    5 D1 E. \, U" b1 n5 h) `& X# |& v( _end# g  x4 J  p7 ~% K; J) Q
    diff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)
    7 p) c: N0 M, S; J% `/ szero=(max(diff_nsfmn)-min(diff_nsfmn))/2;1 Z0 @& h* y: w8 V) r+ Z
    diff_nsfmn1=diff_nsfmn-zero;+ ^/ J, s) ?% b7 S) O* |
    %*****************************************# Z7 O7 [. k1 b: ?4 L! h
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    % |2 m9 o/ ?* b3 P4 I( Z5 `%**************时域到频域转换**************4 K& h4 Z9 r$ e
    ts=0.001;                                    %抽样间隔1 F, a: j. `$ X& \6 r" W
    fs=1/ts;                                      %抽样频率
    7 p+ W9 A# N) L+ e0 [& w# ^: kdf=0.25;                                     %所需的频率分辨率,用在求傅里叶变换1 n- U4 T. v# k# A; J
    %                      时,它表示FFT的最小频率间隔
    / M% O3 O% t- a) ~0 h%*****对调制信号m(t)求傅里叶变换*****. P4 u& y# j1 u
    m=am*cos(2*pi*fm*t);                         %原调信号
    - X) y( v: R0 b  O4 c7 x$ B+ F, pfs=1/ts;
    3 a5 p" M' l) F5 S% K+ j/ J5 @if nargin==28 J( }# i( v' e0 b
        n1=0;
    " N, C, _$ P( Lelse
    4 M, B+ T/ a; D! X    n1=fs/df;, `  H* [5 E$ H7 I
    end" p8 o; g; {1 n: _  H" J+ ?. l
    n2=length(m);( i$ T8 ?! P. s+ [1 u" y7 ?
    n=2^(max(nextpow2(n1),nextpow2(n2)));, k2 e& L+ |: W7 L
    M=fft(m,n);* D% V# [- ^: G/ t" W1 T
    m=[m,zeros(1,n-n2)];  m( Z9 P$ [4 b" B% {
    df1=fs/n;                                   %以上程序是对调制后的信号u求傅里变换
    $ l% M5 s$ y. a0 r" j' N; C3 z, aM=M/fs;                                   %缩放,便于在频铺图上整体观察
    ( H3 a! s# g( L5 h+ b8 kf=[0:df1:df1*(length(m)-1)]-fs/2;                %时间向量对应的频率向量/ Z" R9 y9 a  f, ^8 C  n

    6 C8 ?5 {1 h  I( z3 h8 k%************对已调信号u求傅里变换**********
    6 l' J9 w, i, p% Q, ]$ p9 l! Nfs=1/ts;( ~; [$ w6 G0 |5 L7 b: a
    if nargin==2
    4 n1 N: o0 Z! S$ Q    n1=0;& ?+ d' v+ f! [  u0 {
    else4 b6 C) }/ U( k- M7 F, W2 ?+ `
        n1=fs/df;+ m& l# G5 a0 e( _
    end! q1 n- a8 S! K* w$ j9 N' z3 a
    n2=length(sfm);
    6 F, \2 d" S' P# G1 F/ g  E% bn=2^(max(nextpow2(n1),nextpow2(n2)));
    8 e3 }7 H/ C9 S3 c0 \U=fft(sfm,n);. ?# c2 U& Z" P( i8 z+ {. x# n
    u=[sfm,zeros(1,n-n2)];# `- L3 k: Q& x& I3 J
    df1=fs/n;                                   %以上是对已调信号u求傅里变换$ S6 l4 U2 N' x% W: [
    U=U/fs;                                    %缩放
    3 J& d( ~8 G5 e8 v/ i5 }%******************************************
    9 ~" k' D6 j/ a0 W% `%*****************************************
    ! a0 b6 A& j; y8 m1 q; T%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·" z+ C3 ]/ Z* j( I8 l
    %***************显示程序******************, R$ m2 N- C( x& z. `' p1 L# h' _
    disp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')+ f$ b! ?  l' N# J  Z
    pause# L) Z9 o- |' h( b" T
    %**************figure(1)******************
    , f  e) j" G2 [% @2 H0 \figure(1). |. ^! s: u' [. e7 R
    subplot(3,1,1);plot(t,mt);                                 %绘制调制信号的时域图- B  r% q/ f( |6 a0 Z
    xlabel('时间t');4 K9 d2 K' Y% K) Q! z
    title('调制信号的时域图');
    2 u& m3 N; _5 u6 `7 g; w) @subplot(3,1,2);plot(t,ct);                               %绘制载波的时域图
      x* T* m2 s. B/ Txlabel('时间t');
    % t" t; k5 i3 x* U" \. Etitle('载波的时域图');) ]7 O! n" C- u' |) r" a. @0 y( B, L
    subplot(3,1,3);& [4 O4 v3 {6 S
    plot(t,sfm);                                                  %绘制已调信号的时域图" T& r4 w& f0 n8 V; c7 Y/ _
    xlabel('时间t');5 A' N6 E9 [9 `* O6 A# Q
    title('已调信号的时域图');
    # |( p2 u' [5 A: j%******************************************( E- `' x! @5 A/ J# m
    disp('按任意键可以看到原调制信号和已调信号在频域内的图形'), n: q. @# @# S; k* X* }
    pause
    ; }3 n2 f! o' V. q& r9 ~; k%************figure(2)*********************" F3 F. \3 @6 [& E2 Y
    figure(2)
    , Z5 S0 x& j, \, Ksubplot(2,1,1)
    " {: Y8 [( @/ b$ Eplot(f,abs(fftshift(M)))                        %fftshift:将FFT中的DC分量移到频谱中心6 N4 ?  C9 l& u* H
    xlabel('频率f'), [; J9 n" u9 Z% i( ]
    title('原调制信号的频谱图')
    . H7 a! X6 [' b# lsubplot(2,1,2)
    ! n4 P8 c* @- k0 C& G# Oplot(f,abs(fftshift(U)))7 e5 _9 F7 ?+ t3 ^8 R& U1 s
    xlabel('频率f')" }7 `. n/ L" |- K! {* o$ P
    title('已调信号的频谱图')
    7 z! h" o1 i( M/ N( Q. V: u%******************************************
    % C: a+ v/ p% Q" S) Ndisp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')8 i+ @0 O7 @8 ^) S; _
    pause
    6 j5 m; K* o, t$ K%**************figure(3)******************
    0 X  ~! [, ]% J. [0 o0 Qfigure(3)( B9 X( t7 c/ e; E7 M1 Q
    subplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图
    " f' `! c( Y" Q2 Yxlabel('时间t');4 N2 Z3 Z. _3 d
    title('调制信号的时域图');  W" W( j+ L% }; {
    subplot(3,1,2);plot(t,sfm);                              %绘制已调信号的时域图$ ?8 g, h' ?" @" ]  M
    xlabel('时间t');' M& H/ H5 _2 i3 [$ j
    title('无噪声条件下已调信号的时域图');! }1 j- }9 v) j
    nsfm=sfm;                              # Y0 I) i" Y+ `, `# e, F7 Q
    for i=1:length(t)-1                           %接受信号通过微分器处理9 H9 r7 p; e& N( v& r
        diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;: T$ g9 C$ f) {5 a) F- B/ e
    end, l1 w2 _( }. {) L, }# M
    diff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)8 t' Z- p  ]6 {+ u. M$ X: n
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;( u# J, K: O$ Q; f* M1 X6 z
    diff_nsfmn1=diff_nsfmn-zero;& U$ v  O2 [9 A, F8 l
    subplot(3,1,3);                             %绘制无噪声条件下解调信号的时域图
    5 a- ~! G$ z" s: Vplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
    " a$ w+ S7 T! r2 M* _: X& m' [xlabel('时间t');                          
    5 e3 L3 w& k+ e# }, h/ j# w, Ltitle('无噪声条件下解调信号的时域图');
    ) ^1 d- _; P1 p* G" f. q; {( ~9 b%*****************************************
    2 O8 \1 M! V, z! Q9 P0 ldisp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')  r; Z" w% C+ \8 c
    pause# p! [7 d! _) _& O- j8 }
    %**************figure(4)******************
    ( E, H1 \; c& ]9 S! `  a! ufigure(4)5 T# |( |% O& K/ q. D- R
    subplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图
    ) i( J. C+ y9 T6 n0 v- Dxlabel('时间t');0 }! N. ?. d! e: L! t1 j3 C% J$ d
    title('调制信号的时域图');
    - p7 z6 v# f0 d2 a- b& Bdb1=am^2/(2*(10^(sn1/10)));                   %计算对应的小信噪比高斯白躁声的方差2 R& q/ g: |; g$ {
    n1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声. Z- }+ I! D6 {2 N* a. d
    nsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通! }/ p/ L" C% w9 E
    %                      %过信道传输)2 b  u$ b8 V. u1 x
    for i=1:length(t)-1                            %接受信号通过微分器处理7 e2 _/ Q/ @' ]* Z3 N$ {4 L% d% N. f
        diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
    ! Z6 K+ @, u- J# h2 f  f; bend/ N# ?( j4 z" T1 {' b1 g* d
    diff_nsfmn1 = abs(hilbert(diff_nsfm1));   %hilbert变换,求绝对值得到瞬时幅度(包络检波)8 U) F  p/ X3 `6 g4 I: Q1 X) H
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;- V, `$ C% w7 f3 i5 V% ?7 p
    diff_nsfmn1=diff_nsfmn1-zero;
    7 f6 I1 m8 E& I4 ~7 f+ f8 d: @subplot(3,1,2);
    ' S% S/ Y( h3 Y) z+ yplot(1:length(diff_nsfm),diff_nsfm);      %绘制含小信噪比高斯白噪声已调信号的时域图
    . U  ~3 e3 N* \- h) ~# T  l' ixlabel('时间t');
    1 ~3 T$ w. ]* S1 J. n0 ]* o3 u! jtitle('含小信噪比高斯白噪声已调信号的时域图');/ B# E3 @; v) E
    subplot(3,1,3);                        %绘制含小信噪比高斯白噪声解调信号的时域图- W0 n7 z+ a# q9 `& g2 t
    plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');: S( u) u+ j# @9 |* J9 G
    xlabel('时间t');                          
    $ ^8 p6 h$ r; |/ Ttitle('含小信噪比高斯白噪声解调信号的时域图');
    + x7 f+ J* P# t3 ^%*****************************************+ w7 s& X! U& j0 n' d- H( G
    disp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
    7 P' N8 f7 p. j. D$ k: r- v* a! fpause9 n4 K+ @' t) a( D9 B  Z+ g9 f
    %**************figure(5)******************
    # Q* h" v: z% S, o/ [figure(5)( W( `  }# A' x* @- F% D
    subplot(3,1,1);plot(t,mt);                                   %绘制调制信号的时域图
    : [9 S( B- m; I) S; ~xlabel('时间t');
    # ^' y9 D$ d8 q/ n4 @- r$ n, jtitle('调制信号的时域图');5 ]- K! }' `$ W3 Z+ p& ]
    db1=am^2/(2*(10^(sn2/10)));                   %计算对应的大信噪比高斯白躁声的方差# G+ G# ?; k1 x
    n1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声
    # W' X4 a$ w& J  J7 |# [nsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通过信道传输)+ h2 a0 Z. C. Y# A2 s+ r- Y$ Z1 I
    for i=1:length(t)-1                             %接受信号通过微分器处理
    0 ~$ f# O* [. Y7 W    diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;1 [% K, W: B# L& w- |
    end
    + }- I. x" D5 |' ^9 ndiff_nsfmn1 = abs(hilbert(diff_nsfm1));            %hilbert变换,求绝对值得到瞬时幅度(包! y& p$ N( x# K- |7 n. ~
    %                      %络检波)
    7 t: a! B0 K7 M# o3 Mzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    ' k& U8 l: K$ z5 L2 rdiff_nsfmn1=diff_nsfmn1-zero;
    : U/ @9 N4 x" W1 N" y1 Esubplot(3,1,2);
    0 }' B2 u  t9 C5 y/ Fplot(1:length(diff_nsfm1),diff_nsfm1);             %绘制含大信噪比高斯白噪声已调信号& n0 B1 P- T* b* F( y
    %                      %的时域图# {, O: U8 @: \# K% s7 y
    xlabel('时间t');7 Z; I) }& f- }
    title('含大信噪比高斯白噪声已调信号的时域图');; B  m8 n, I! P7 x* A: I: I9 \8 q
    subplot(3,1,3);                                %绘制含大信噪比高斯白噪声解调信号- Q2 y7 P% V; i4 C
    %                      %的时域图3 m$ c! E! H4 m) c! ~- p9 C. v* O8 V
    plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');) B7 ~4 ]  b! U" I
    xlabel('时间t');                           
    4 Z7 j6 c* s/ Gtitle('含大信噪比高斯白噪声解调信号的时域图');
    9 w6 @& I  `4 |( q%*****************************************
    0 Q) W( ^* A# W0 ~# t%******************结 束*******************! x) A' a5 ~- a( U8 o$ S

      Y/ b( v8 Q+ _( l( g& {
    1 Z/ V$ e* j$ y" k% z5 X9 X3 ?
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    李秋锐        

    14

    主题

    14

    听众

    76

    积分

    升级  74.74%

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

    [LV.4]偶尔看看III

    社区QQ达人


    / j+ }5 j5 ]' p
    2 m  I* O2 ~% p- V) `3 j, R  [& R2 V
    。。。。。。。。。。。。。。。2 |8 U( c! m& S: w. S
    2 @' `! i  G; I
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-4-16 12:45 , Processed in 0.366755 second(s), 61 queries .

    回顶部