QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2183|回复: 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
    " J* g* F. G3 h1 T! r! u4 k* ~%频率调制与解调的Matlab演示源程序
    0 ~, ~4 I  ?/ P1 W  a' S  q( l3 w) P2 |%可以任意改原调制信号函数m(t)
    & g/ z% ]1 @" e0 ~, r' d! C%电子信息工程  杜怀超 091308305  : K1 {: x$ l& x9 w* A/ Q
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·4 C; l# b& m, d& h
    %*****************初始化******************
    ' _9 l6 N7 f: n; U4 z. jecho   off       8 l8 _( X4 p- l" c. L
    close  all
    8 l, U5 p/ w& o! `/ jclear  all
    : J) \+ P4 B9 b; ]% @. U. V) qclc6 i+ z. t) y2 [1 B  ~, j5 a
    %*****************************************
    + `, J' E( G. F9 y1 |/ K( |%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    ; U, ~" w0 o3 O) P- `  M/ h%****************FM调制*******************, _: B9 b/ n& B4 J. o3 r
    dt=0.001;                                   %设定时间步长
    , T' G6 {+ ^. U$ I* c- Mt=0:dt:1.5;                                       %产生时间向量# y0 J) r/ d3 e; }; n7 U
    am=5;                                      %设定调制信号幅度
    # I" V5 b  U1 s; R9 Vfm=5;                                      %设定调制信号频率9 [2 i6 z* D% d5 C' G( D) T( D
    mt=am*cos(2*pi*fm*t);                        %生成调制信号
      {. N! Q  ~1 ?) Pfc=50;                                      %设定载波频率
    # r( U  K( v9 f9 h6 nct=cos(2*pi*fc*t);                             %生成载波' U/ v- X" p9 H
    kf=10;                                      %设定调频指数2 b; ?* E- r+ f+ P: H
    int_mt(1)=0;
    . ~7 Q3 r7 T2 ?7 h/ d1 nfor i=1:length(t)-1  " e& g- M% }2 J' Z4 o8 w
        int_mt(i+1)=int_mt(i)+mt(i)*dt;               %求信号m(t)的积分' |" i2 u6 K  Z+ B
    end                                          %调制,产生已调信号
    4 q9 e* d! E/ \. k' Osfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt);            %调制信号* q3 F, C8 Q) \: V! F& ^! g+ X+ U
    %*****************************************6 u! E, o; s/ S' [
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    3 h3 }$ }, f5 z9 U- K  V8 H, C+ r%*************添加高斯白噪声**************$ @0 ]; B4 C3 W
    sn1=10;                                     %设定信躁比(小信噪比)5 h7 P" D/ n$ G& C
    sn2=30;                                     %设定信躁比(大信噪比)4 ~- Y7 d! m4 A
    sn=0;                                       %设定信躁比(无信噪比)9 m$ s8 |. h( B9 Y
    db=am^2/(2*(10^(sn/10)));                     %计算对应的高斯白躁声的方差
    ) Y. i, C7 t, r: c% q( sn=sqrt(db)*randn(size(t));                      %生成高斯白躁声
    5 k$ \: k( t" H# z1 G: s' rnsfm=n+sfm;                                %生成含高斯白躁声的已调信号(信号通1 k0 h5 }- z7 P4 U9 `; {
    %过信道传输)
    9 y, g% P& g9 p# ?$ u6 |) C( O, X% ]%*****************************************
    5 Q% @* W3 P4 B0 M. B0 V%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    2 q, D  e* ~% [6 o) Z" I%****************FM解调*******************
    * \5 B8 W& D5 |' R: }+ O) Mfor i=1:length(t)-1                             %接受信号通过微分器处理4 `7 u/ [$ h1 H) ]
        diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;% q) I; A$ ~  `# e: L
    end9 Q$ m5 j# |0 O2 @; {& h
    diff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)
    , @* O3 [1 F8 a+ V# x* fzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
      g4 K% [) T8 p% Bdiff_nsfmn1=diff_nsfmn-zero;
    ! b' F+ g/ i! x7 Y( z%*****************************************0 c8 h5 o8 @1 G/ y
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    ! [$ `$ [# d+ v; s: X! D0 ]+ V& \%**************时域到频域转换**************/ p9 {; H5 J# z8 S8 o
    ts=0.001;                                    %抽样间隔
    2 {" c$ B4 n4 {* q9 Z" f( s" \fs=1/ts;                                      %抽样频率
    : X+ f9 e9 q6 j5 M* y1 ?df=0.25;                                     %所需的频率分辨率,用在求傅里叶变换+ `& H; l6 ^- w, I
    %                      时,它表示FFT的最小频率间隔
    + x1 T( {$ z  ]3 y5 [+ y0 |%*****对调制信号m(t)求傅里叶变换*****- F3 L. L2 y+ S- R! r: g
    m=am*cos(2*pi*fm*t);                         %原调信号
    % B( ?; x+ u* R- `8 P- @7 Xfs=1/ts;
    % }7 L/ K7 a. Zif nargin==2
    * f. P/ b2 y% L- ^5 _! u    n1=0;
    1 B2 }2 J" _# Y/ r0 Z# W" w' ielse
    " G9 k1 [- i  `: `, |/ w" U" _    n1=fs/df;
    % c$ Q: h% r9 d6 G0 Send/ j2 x- C! L9 V6 A" t3 y# g
    n2=length(m);
    " ~& F' F. Y) r0 U; ?; [+ [. ?& \- Nn=2^(max(nextpow2(n1),nextpow2(n2)));
    0 N1 ]; O3 O4 v8 _3 N" h1 H$ R! ~M=fft(m,n);( L5 c6 d! G9 d% K2 Q
    m=[m,zeros(1,n-n2)];2 w% q4 L/ Q0 N: |
    df1=fs/n;                                   %以上程序是对调制后的信号u求傅里变换4 b  T1 G8 _+ r! B: I. h; Z
    M=M/fs;                                   %缩放,便于在频铺图上整体观察* E- H' S9 S& S. Y! m) M  \
    f=[0:df1:df1*(length(m)-1)]-fs/2;                %时间向量对应的频率向量
    # \4 z$ z9 g! A( ~! c5 }, C$ C( g) u. x" U3 t4 J% {, a1 L
    %************对已调信号u求傅里变换**********4 h8 G6 Z/ a- y5 N: C1 @! Q
    fs=1/ts;6 v5 m; Q& w" N& N. v2 y9 p0 H; j
    if nargin==2  A: G3 r5 {  _" K. {; c
        n1=0;
    ! ~$ P1 h& A# Z& n, S3 gelse. E9 O5 t0 `; ^" l6 J
        n1=fs/df;
    3 _) o- B5 J, x' P: Hend! [) `! a, ]8 [% Z; d/ g" a, H
    n2=length(sfm);) g8 Z0 s' y- t6 k, {
    n=2^(max(nextpow2(n1),nextpow2(n2)));) F- a( Z; d1 t: j( i. Y  Y
    U=fft(sfm,n);1 K6 ^: h! K, i2 U+ _
    u=[sfm,zeros(1,n-n2)];
    9 N+ L: R. ^$ h: ndf1=fs/n;                                   %以上是对已调信号u求傅里变换
    ( @3 }$ [& s+ g5 bU=U/fs;                                    %缩放' |) ?6 _  k9 N* i; u6 b
    %******************************************
    . M  l6 C1 O  N1 G( l& ?( b%*****************************************; t: u/ @' g! `+ k. [8 p9 A
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    3 i" _0 ^4 Z/ g5 J# H%***************显示程序******************
    5 A/ l, z, u+ ], g0 {) udisp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')7 |2 u. _  x* K% ?' g+ G9 q
    pause$ D' P$ n& |2 c& N1 J3 g
    %**************figure(1)******************
    6 D/ W' l% v- w) zfigure(1)' ]! W0 v! ~7 g- g# r
    subplot(3,1,1);plot(t,mt);                                 %绘制调制信号的时域图! o6 W1 S* N, x/ N! Q0 }0 T
    xlabel('时间t');
    % y  |* ]$ c! ~2 _) Ctitle('调制信号的时域图');
    2 ~% ~  P  W3 ~6 T  C1 esubplot(3,1,2);plot(t,ct);                               %绘制载波的时域图" i: u$ v8 F1 {7 g' f8 }, Q' b. H
    xlabel('时间t');, s4 X" q: E0 B4 M+ d
    title('载波的时域图');
    3 k; u0 \8 a9 Q- g* ysubplot(3,1,3);! \( }- G3 V! ]. v2 I- G3 D4 H) T
    plot(t,sfm);                                                  %绘制已调信号的时域图
      w5 ?: n) C8 H$ Uxlabel('时间t');. }% W: b! ?. f# T( A, d( Z- ^7 s
    title('已调信号的时域图');* Z/ ^9 Z4 A8 D5 E7 j( ]
    %******************************************( }2 Q4 H  s: u- ?4 @+ j8 V$ i" e
    disp('按任意键可以看到原调制信号和已调信号在频域内的图形')
    ' ]- i9 y" K" N8 ~& D/ q5 Apause
    3 O: b6 E- h# I$ p+ S%************figure(2)*********************
    * A+ s6 M. P9 S) V4 P7 s4 ufigure(2)( R5 k% c" e2 d  y3 G8 ^& S
    subplot(2,1,1)3 l6 y$ _. _& T( p) e
    plot(f,abs(fftshift(M)))                        %fftshift:将FFT中的DC分量移到频谱中心' }1 }1 f' v* o& i
    xlabel('频率f')
    " D% B4 W/ a' U' t2 ftitle('原调制信号的频谱图')1 H$ B* W" j0 _7 e$ a
    subplot(2,1,2)8 z3 o; o, |& c: B+ j. o/ h
    plot(f,abs(fftshift(U)))
    1 j9 s- a+ k2 r1 zxlabel('频率f')
    5 f. q* c: ]" i3 O6 ^title('已调信号的频谱图')
    ; M- v, f# q- ]%******************************************, S( C# X3 c* k, _: F( w5 N
    disp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')2 f+ T  T+ x9 s9 r, S9 T' H. a
    pause% s8 N+ l% Z: x& N% B& k
    %**************figure(3)******************
    5 }; D4 _$ M& ]/ S9 Y# rfigure(3)
    0 m; b9 }- W4 ]1 X! Rsubplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图. w/ p% ~9 o" k8 l  J
    xlabel('时间t');
    ; u0 o3 F$ W- G, ~  Z$ Q$ Mtitle('调制信号的时域图');
    7 _2 x# L. W/ L' Z0 msubplot(3,1,2);plot(t,sfm);                              %绘制已调信号的时域图9 o% X5 g# l1 ]8 k% B0 R; i
    xlabel('时间t');6 K$ b  d; W. w* t$ u0 `; \
    title('无噪声条件下已调信号的时域图');
    * a  s6 }5 ^; `2 c# t( ?; J* wnsfm=sfm;                              
      z7 n& q" e. p& y$ r9 Afor i=1:length(t)-1                           %接受信号通过微分器处理
    ) t# @5 a8 M4 X0 I% d! ~! F    diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;% p- _" v  n  s- V, }4 {
    end
    - O# c* J6 Y  S+ O- }" N5 r4 x) kdiff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波), |9 G7 {  Q  S% o1 F
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    # n+ W5 S, k- P' R( ^: m& l7 Ediff_nsfmn1=diff_nsfmn-zero;) Q- s6 l3 q8 C
    subplot(3,1,3);                             %绘制无噪声条件下解调信号的时域图  v" s5 v+ J' Q1 b' Z- Q( q
    plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
    # \$ d0 s& G" t# l  sxlabel('时间t');                          2 c  }) p" k  H) z1 ~6 _
    title('无噪声条件下解调信号的时域图');4 ]6 ]0 d6 e0 G& O1 c
    %*****************************************  S: L2 {  [6 o6 ~6 a+ s
    disp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')% k" t8 [" K4 y6 ~$ a3 q4 k
    pause
    - J- r! a: v( S/ ^2 k%**************figure(4)******************$ \2 u" F( y5 w' A2 Z/ g' `+ x1 v
    figure(4)
    ; Z* `! y3 ~# U/ fsubplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图. n7 b  Q2 U7 F6 O
    xlabel('时间t');
    1 C- w" A5 s$ S! A5 P7 V3 ititle('调制信号的时域图');
    + V0 h+ P, \, ~8 x, k$ Zdb1=am^2/(2*(10^(sn1/10)));                   %计算对应的小信噪比高斯白躁声的方差
    $ h  @$ T' m1 |4 y5 Q6 Cn1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声3 x% s7 G+ q0 ]
    nsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通
    $ ^) _' E- v& w%                      %过信道传输)
    ! j/ X' e; n, e  d7 M/ C4 W9 r: kfor i=1:length(t)-1                            %接受信号通过微分器处理
    5 x. y0 j/ q7 x9 g    diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;. Y) X, T; {% a5 w. Z+ `
    end5 R% t; j/ x0 Z6 k
    diff_nsfmn1 = abs(hilbert(diff_nsfm1));   %hilbert变换,求绝对值得到瞬时幅度(包络检波)" O7 v  C: _/ q% y- T/ J9 v# A- I
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;3 D/ x0 m2 c; n& `' H7 O( F
    diff_nsfmn1=diff_nsfmn1-zero;9 o8 D, S, f8 x
    subplot(3,1,2);
    * P' J/ j$ {, S" pplot(1:length(diff_nsfm),diff_nsfm);      %绘制含小信噪比高斯白噪声已调信号的时域图
    ; C7 i3 s+ P, x! w" d" {xlabel('时间t');
    / V3 O$ ]7 s3 K0 l% ctitle('含小信噪比高斯白噪声已调信号的时域图');
    ; @/ z3 D( M7 z$ usubplot(3,1,3);                        %绘制含小信噪比高斯白噪声解调信号的时域图
    - c# d" m7 ]. y8 r% f, [plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');, v! o, N- }. m% o) d( W
    xlabel('时间t');                          
    5 q1 U4 B8 Q  Y! U% Ptitle('含小信噪比高斯白噪声解调信号的时域图');
    ! F) Q- W% E# c1 n7 [  K%*****************************************  y" l/ l# j6 `6 ^1 x
    disp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
    9 [) x& X+ [; ^) S+ o6 Lpause
    - A9 l) ]5 ~, q0 b; E+ y' V1 `%**************figure(5)******************# t4 @7 Z8 ?7 p
    figure(5)
    - e, j: [7 o1 L: j' Gsubplot(3,1,1);plot(t,mt);                                   %绘制调制信号的时域图0 l5 n+ \# h8 G) u2 R% d
    xlabel('时间t');
    * s! i! E9 v& g! r' Y1 [title('调制信号的时域图');9 B3 B1 O0 o/ G  z8 n( |- o  R* G( v
    db1=am^2/(2*(10^(sn2/10)));                   %计算对应的大信噪比高斯白躁声的方差% C+ f% F$ V. O! ^. t9 P
    n1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声
    2 _8 f( y" k1 x6 @nsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通过信道传输)
    1 N$ M# [+ ^' _. }" V8 k$ efor i=1:length(t)-1                             %接受信号通过微分器处理9 \/ T1 _! D, I  t- m% e
        diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
    ; H  D1 b2 b4 u) Vend/ Y" ?( J6 V8 O
    diff_nsfmn1 = abs(hilbert(diff_nsfm1));            %hilbert变换,求绝对值得到瞬时幅度(包
    $ a& T0 T. E) x) k%                      %络检波)
    9 G( s  N2 ?" p2 u$ `2 Ezero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    + ]0 B9 ]9 `8 p. T% g5 J* jdiff_nsfmn1=diff_nsfmn1-zero;
    * |4 A# ?! V9 dsubplot(3,1,2);
    % {. N4 O4 I  g' M# D% ?) w7 iplot(1:length(diff_nsfm1),diff_nsfm1);             %绘制含大信噪比高斯白噪声已调信号% w. {6 i8 x+ O; k1 i4 Q1 N0 p
    %                      %的时域图
    / b* @* `, r, ^7 t, R% xxlabel('时间t');: z$ M" z6 Y( ^8 v& |
    title('含大信噪比高斯白噪声已调信号的时域图');
      k6 r- D5 _' D* ~% `% w5 F3 Asubplot(3,1,3);                                %绘制含大信噪比高斯白噪声解调信号
    * t4 f/ J2 ^, K; Q! S0 R; _0 I%                      %的时域图0 ~! H; b- |. r5 R0 J
    plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
    * B) A" Z" D: G- R$ Rxlabel('时间t');                            : _& p3 b! f8 `; ], H% Y7 i+ N( F
    title('含大信噪比高斯白噪声解调信号的时域图');# ?- v4 U7 q7 A& H$ U1 M7 U8 e
    %*****************************************
    * C, p8 ^/ \& `, a/ k%******************结 束*******************
    " B) g4 X. H2 L& y" E
    9 W" ^% y. r; F( I
    + j, U, V; a# @" S: Z
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    李秋锐        

    14

    主题

    14

    听众

    76

    积分

    升级  74.74%

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

    [LV.4]偶尔看看III

    社区QQ达人


    - [$ u2 z6 j& f& P+ e+ ~- B/ ?6 Z" ^/ J& `' S2 f# p

    + K. @2 y% P2 Z/ y) C。。。。。。。。。。。。。。。3 J5 C+ Z5 t# A4 H5 U
    ) D! v- O+ E3 T  P" Y7 [
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-8-24 21:03 , Processed in 0.948462 second(s), 58 queries .

    回顶部