QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2244|回复: 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
    , Q+ ]' d8 s- g* P! I, e0 F8 h%频率调制与解调的Matlab演示源程序! I$ b' r9 O9 k/ |  T: D
    %可以任意改原调制信号函数m(t)
    5 d/ p$ \6 r+ B+ Z2 k%电子信息工程  杜怀超 091308305  
    " x% R" R% p- \+ Y3 i6 [  a%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    8 u6 `' i& D  i1 r- U%*****************初始化******************' X5 ?, a4 }& [  [
    echo   off       ) X& O" b7 z' b/ o1 X$ v, O6 X
    close  all
    ) W& X& T+ J, n) k% E7 a- a) q, jclear  all* X3 v5 B3 z- z7 W, B2 L$ r5 }
    clc
      t% z# F- n; I4 m) |' G2 W4 b%*****************************************- n8 w, H3 J: {3 t
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    3 U0 q3 M% _2 `% n" D) i%****************FM调制*******************5 p' K) I! g( [% l
    dt=0.001;                                   %设定时间步长
    / \' }6 j3 ~0 y0 V( Bt=0:dt:1.5;                                       %产生时间向量
    # V8 ?1 D' q3 s: |# gam=5;                                      %设定调制信号幅度
    1 m) T7 |3 g- i2 s0 L' _6 |( [fm=5;                                      %设定调制信号频率: H7 |8 D' a' c# N
    mt=am*cos(2*pi*fm*t);                        %生成调制信号
    / w: W8 W/ y% T7 Sfc=50;                                      %设定载波频率8 @0 k5 Y9 G1 e) |- T) R, {
    ct=cos(2*pi*fc*t);                             %生成载波
    5 X2 L5 G- t: Bkf=10;                                      %设定调频指数
    4 p4 n9 p) d# Mint_mt(1)=0;4 ~  k3 l# J7 d
    for i=1:length(t)-1  ( ^7 s4 X; X. l' Y7 O( A4 W; N- w
        int_mt(i+1)=int_mt(i)+mt(i)*dt;               %求信号m(t)的积分
    % y5 N+ F4 X; g& l- c/ i3 wend                                          %调制,产生已调信号
    . }* a% F0 r) a: m' O4 ]- G" i9 \sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt);            %调制信号! P  L1 I8 o0 p$ g. z6 Y4 x
    %*****************************************
    ) i7 G# U* p, h/ z) ?- @1 E+ J, j%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·% b4 b) Q* [; o, @/ Q
    %*************添加高斯白噪声**************
    9 e, b1 k. Y0 c4 ^' q9 ssn1=10;                                     %设定信躁比(小信噪比)2 z/ v. E( V$ K6 b
    sn2=30;                                     %设定信躁比(大信噪比)
    ' Z& A7 F4 G# z# q9 m! Osn=0;                                       %设定信躁比(无信噪比)1 ?( N' P& O& o
    db=am^2/(2*(10^(sn/10)));                     %计算对应的高斯白躁声的方差
    & C- |# X% [4 O9 p/ O, `4 Y; vn=sqrt(db)*randn(size(t));                      %生成高斯白躁声
    # n. X* D1 H% E% o6 X& i) lnsfm=n+sfm;                                %生成含高斯白躁声的已调信号(信号通
    7 C( q( k% m- v6 q%过信道传输)
    0 C. W% i6 E1 ?2 i%*****************************************
      A! h; w0 _" n7 }6 d3 q8 N%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    ! h8 O% ]6 `# M3 N: X%****************FM解调*******************4 F5 ?! I( g" M
    for i=1:length(t)-1                             %接受信号通过微分器处理
    $ A* ]8 M) h! _    diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;4 B9 Y, K4 t' O) @
    end
    5 v, G5 G$ ]" m2 z) Sdiff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)
    % {7 Q& D7 Q0 m6 k6 d) azero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    / L* `. o9 ?) k* r& y" hdiff_nsfmn1=diff_nsfmn-zero;
    . I8 t5 Q1 g7 Z%*****************************************( ~: C4 E. ?- m3 x/ V: x
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·% M1 J' e# h, C* L
    %**************时域到频域转换**************4 ]9 I* s+ V3 f+ s+ X
    ts=0.001;                                    %抽样间隔
    " H4 o6 |& H  k" z- Tfs=1/ts;                                      %抽样频率3 _, |7 r9 r2 t/ x1 C" C( }
    df=0.25;                                     %所需的频率分辨率,用在求傅里叶变换) ]0 t, h! i5 o' @) s6 `
    %                      时,它表示FFT的最小频率间隔
    + V4 S  F6 z; H5 L3 y%*****对调制信号m(t)求傅里叶变换*****3 M& C2 r8 [0 m1 x' E0 ~) q
    m=am*cos(2*pi*fm*t);                         %原调信号
    & G: p0 m6 S$ J- \& ^% bfs=1/ts;
    0 o  t% x! ]* v1 H% zif nargin==2; e$ T! }* w1 F* {3 L
        n1=0;
    4 \. Z* l2 ?- Q$ W; X2 D% O( Pelse
    1 B- D) ^4 w/ F5 ~    n1=fs/df;
    - l! y) X* q) V7 _6 lend0 t" k* F: l+ _4 E) i* @3 d& k1 i! n
    n2=length(m);% C  G5 {( [" h% e
    n=2^(max(nextpow2(n1),nextpow2(n2)));
    2 G0 n$ r# `7 D: t& J% x# ]& `M=fft(m,n);
    9 @6 y. r  L1 `# o2 U$ R; w+ w8 }m=[m,zeros(1,n-n2)];
    4 l+ L1 d. F9 B: ndf1=fs/n;                                   %以上程序是对调制后的信号u求傅里变换0 I$ g3 B) ?9 B2 j
    M=M/fs;                                   %缩放,便于在频铺图上整体观察' C% @/ c* E: b4 i: u. s4 [% X$ l
    f=[0:df1:df1*(length(m)-1)]-fs/2;                %时间向量对应的频率向量* q5 ?% v1 P- x$ ]4 o+ G; M
    " g8 `4 M* p/ T4 f7 }8 ?
    %************对已调信号u求傅里变换**********! Q; _: A  z! X: }5 o
    fs=1/ts;2 n5 |, N! a5 x4 I; A- y7 [
    if nargin==2% Z  o8 h" }# U8 O
        n1=0;8 w1 x% N- w% ~# V
    else. n  K' f( t2 h! H4 ~/ y  z& B
        n1=fs/df;
    + g2 X# z( t  m% ]+ \, `) Mend) J1 t1 X8 W3 K2 K2 b% e
    n2=length(sfm);
    8 ^% F4 ^, ^* B/ ~' [6 _n=2^(max(nextpow2(n1),nextpow2(n2)));
    ( t9 z- c) F2 g/ pU=fft(sfm,n);4 e/ ^. ~7 c9 B  p
    u=[sfm,zeros(1,n-n2)];* ^% O6 r  B7 D! R, Y! z
    df1=fs/n;                                   %以上是对已调信号u求傅里变换
    8 q9 f/ i; z+ L/ G  G9 NU=U/fs;                                    %缩放
    ) |7 Z" G$ j% }6 K- ]5 Y%******************************************5 C+ s7 \) c9 Q& }- P* ~
    %*****************************************6 H* Z0 X8 d6 N6 {, U: ]+ n
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·2 v& D' i! ~0 i+ I) z- H8 E1 t4 }
    %***************显示程序******************
    9 a& U3 V: u& H' r# ~2 g& odisp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')  Y) y# t! X" H& S' [4 T+ K* H9 W! V
    pause
    - j8 Q5 w0 Q# r% c% ^4 o' J- f$ i& Y%**************figure(1)******************
    . u- Q. r. l: g1 I5 H5 o; h" kfigure(1)4 i9 q) p; b6 s, M: W7 R/ V
    subplot(3,1,1);plot(t,mt);                                 %绘制调制信号的时域图
    4 `" Q; I' l  s7 c" F8 w% j, T$ Rxlabel('时间t');0 G& t( d7 ]% U& `- m6 ]
    title('调制信号的时域图');
    8 ]( p. [2 y: O+ g, e: M' Jsubplot(3,1,2);plot(t,ct);                               %绘制载波的时域图7 F; o$ g& ~. D" Q  }9 ~- z
    xlabel('时间t');2 N) _9 N3 P* k7 F6 c8 V) O$ u
    title('载波的时域图');
      E+ C* n% t, c4 v6 Jsubplot(3,1,3);6 ^- L6 |2 c" j1 X+ k1 h
    plot(t,sfm);                                                  %绘制已调信号的时域图
    : d% ~* n4 x4 pxlabel('时间t');
    4 g- @* A  y0 F# `title('已调信号的时域图');2 J, k# N4 }8 Y8 U% d
    %******************************************+ X' k, z' i- a* _' N0 p2 g( w
    disp('按任意键可以看到原调制信号和已调信号在频域内的图形')
    * P) Q. |. W( b% spause3 g2 |% F" c- }  ~! g
    %************figure(2)*********************) a0 F; I# p6 J
    figure(2)3 Y( `6 c' H" L0 s5 T( O/ @
    subplot(2,1,1)8 _, B# \9 l8 b  {
    plot(f,abs(fftshift(M)))                        %fftshift:将FFT中的DC分量移到频谱中心
    # d/ F+ H  m- g- oxlabel('频率f')  F, R3 M" B+ S# |8 m
    title('原调制信号的频谱图')
    # ^7 E4 T. D! T  {subplot(2,1,2)3 ?* T% I. N' A" p( h
    plot(f,abs(fftshift(U)))
    & n* S" n* U8 d4 Nxlabel('频率f')0 W  J- I" T4 ~9 ?7 D3 l4 f5 j
    title('已调信号的频谱图')/ t5 A: e) `: M, |1 {- c: \
    %******************************************
    1 \9 J: U$ ^8 Adisp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')
    % a( H1 Y  F4 r+ V% L! L0 lpause( Z' ^4 u  E9 N5 Y& B
    %**************figure(3)******************
    ) p# R  O' v" t: wfigure(3)
    1 e  A: @8 ]* |6 ^/ ]subplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图
    ( |) D( [6 g$ J  wxlabel('时间t');$ q0 L/ P" t; o. V0 H5 k0 h
    title('调制信号的时域图');9 F0 N! E! w' x9 ]  A. U
    subplot(3,1,2);plot(t,sfm);                              %绘制已调信号的时域图
    2 }4 @+ L( ?8 H. ^xlabel('时间t');
    , X9 q. D. `! F  m4 ititle('无噪声条件下已调信号的时域图');
    8 @- `7 Q" K5 ^# |  U+ Z5 V5 H% |3 Insfm=sfm;                              5 H  Q6 ]5 A$ ^- A% y2 \
    for i=1:length(t)-1                           %接受信号通过微分器处理
    ' D. o* R7 d' u) x    diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;# s" e( }& Q/ s; N, [$ z' |
    end
    4 P" u8 Y+ Y. i4 Zdiff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波); H; S: n0 m& s  h
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    6 }7 J. ]" [* m( }' T1 Fdiff_nsfmn1=diff_nsfmn-zero;
    # h: w; b8 Z0 T3 x- C. @- H5 Ssubplot(3,1,3);                             %绘制无噪声条件下解调信号的时域图
    " |: m' v( O. v8 F/ a( ^( w# rplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');7 y" L% v% v" t5 w5 R) w
    xlabel('时间t');                          ! K5 u% a- {3 L7 v, F! e
    title('无噪声条件下解调信号的时域图');
    ' Y' r- W  p8 d%*****************************************
    , f1 v% ~/ o% ~( T+ @disp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')+ U8 h2 ^( T0 s  ?1 `& f7 A
    pause
    / d( c  y' r. G/ v; I/ r; z0 k%**************figure(4)******************7 h+ G% B4 e# }1 @! e4 \4 @
    figure(4)2 U" G/ v- f9 a+ [
    subplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图9 w& A, b4 J# k2 T
    xlabel('时间t');
    " Y5 f9 f1 k9 v8 y0 H" i- ntitle('调制信号的时域图');$ M, Z3 ^" b  R) y0 v
    db1=am^2/(2*(10^(sn1/10)));                   %计算对应的小信噪比高斯白躁声的方差/ G+ }5 Y( P% U& S0 y
    n1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声
    . k) U- c9 r# m7 b' Snsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通" c2 x5 p: E7 q1 P; c) {/ P+ d+ _
    %                      %过信道传输)
    % j& @8 t4 g8 U; A2 d. @. ?for i=1:length(t)-1                            %接受信号通过微分器处理
    5 a/ q, N1 x7 P1 r$ A    diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;8 {& y& O/ l5 w9 D) ]3 m% a
    end
    0 D- J8 u, r5 n0 mdiff_nsfmn1 = abs(hilbert(diff_nsfm1));   %hilbert变换,求绝对值得到瞬时幅度(包络检波)2 [! t4 z9 U5 E/ K( K! Q# {! @- a& i
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    ( E, d  N9 u) d4 @! u/ idiff_nsfmn1=diff_nsfmn1-zero;
    ; B. n0 v+ N) ]7 ~1 T3 V/ lsubplot(3,1,2);$ M" E' x. q" q- v* q' _
    plot(1:length(diff_nsfm),diff_nsfm);      %绘制含小信噪比高斯白噪声已调信号的时域图# P. B$ ^2 |9 R2 }* w
    xlabel('时间t');" J& q& w  L; b0 a* x$ b3 S8 K4 ^
    title('含小信噪比高斯白噪声已调信号的时域图');
    0 G( j$ c' l4 ~# M- bsubplot(3,1,3);                        %绘制含小信噪比高斯白噪声解调信号的时域图
    + q4 k3 Q  Z0 ^" Mplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
    & Z' w8 I9 j0 H4 ~# ~, Kxlabel('时间t');                          
    & z' x- b* O$ h6 ]5 h7 @4 d, Htitle('含小信噪比高斯白噪声解调信号的时域图');
    1 l7 a2 r1 }; D6 \%*****************************************, ^  P$ Q" ^0 T0 x5 z0 e
    disp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
    ' j  m' Q& p1 j- A4 f2 P+ gpause
    3 K+ t2 [; d- s: l" x# b  w  V9 p%**************figure(5)******************
    8 Q7 e& F1 X- Vfigure(5)
    5 F4 K" J3 ~7 Z3 o0 N' g) D- w& msubplot(3,1,1);plot(t,mt);                                   %绘制调制信号的时域图+ n; @$ ]/ I3 X# M" E
    xlabel('时间t');) b4 x0 N. F$ y( b" h. d7 d
    title('调制信号的时域图');" Q8 `. Z% l; L, t2 K2 R: z- }
    db1=am^2/(2*(10^(sn2/10)));                   %计算对应的大信噪比高斯白躁声的方差% J% [0 S+ N% [/ k
    n1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声7 I5 V7 ]  F& H( l
    nsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通过信道传输)
    + |$ I0 p* f& O2 f: ?: T- Ifor i=1:length(t)-1                             %接受信号通过微分器处理
    . Q. p- w5 {. X/ Q9 f3 f4 n$ Q    diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;% H! V% `# \5 ~3 y  r( E
    end
    ) i+ i) i: W2 y3 J4 z8 wdiff_nsfmn1 = abs(hilbert(diff_nsfm1));            %hilbert变换,求绝对值得到瞬时幅度(包
    + {- e6 G/ }4 m6 d- t- h) l%                      %络检波)8 B7 m2 o2 \, z7 F7 G' `
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;3 v* ?7 G8 K- t8 S2 m; u
    diff_nsfmn1=diff_nsfmn1-zero;
    3 k- Y) Q7 X) b0 bsubplot(3,1,2);5 U8 _3 F. u' W% z
    plot(1:length(diff_nsfm1),diff_nsfm1);             %绘制含大信噪比高斯白噪声已调信号
    3 O, K( m  s9 R. v# E/ d6 C8 t%                      %的时域图
    4 V; H1 U2 D0 x( e+ D$ @" Uxlabel('时间t');
    0 v* h/ r, h  ltitle('含大信噪比高斯白噪声已调信号的时域图');
    . r- o9 V. K7 h; Lsubplot(3,1,3);                                %绘制含大信噪比高斯白噪声解调信号% J( k' ^- n! E# L
    %                      %的时域图
    9 F% o% F% b& O( eplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');9 e3 }; E) y6 r/ [" k5 I4 O, q( x- d
    xlabel('时间t');                            6 H( \8 x  X0 I- z9 ]% k0 S- _
    title('含大信噪比高斯白噪声解调信号的时域图');3 p; |( J, z" b) |
    %*****************************************" [% u; U$ N* }) B' I! z
    %******************结 束*******************
    $ B# T/ v3 w( v6 f3 w8 w  D6 R
    7 p3 Y# w$ O6 h% [
    " P9 z9 u9 p# |% s, B
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    李秋锐        

    14

    主题

    14

    听众

    76

    积分

    升级  74.74%

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

    [LV.4]偶尔看看III

    社区QQ达人


    - I+ `+ V( ]5 d5 a( [5 s- \. l) z2 M7 j' U, Y6 r% a+ _' h8 u) D
    / u" _; ^" e: l
    。。。。。。。。。。。。。。。1 x* E" z, F0 a
    - d: t0 E5 p. ?' h. {& Q. F/ `5 Z. ?
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-10-10 07:10 , Processed in 0.605526 second(s), 59 queries .

    回顶部