QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2130|回复: 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
    8 R, l* F% }- C% ?3 Q%频率调制与解调的Matlab演示源程序% m: F7 k$ V* h( N1 `* ^5 v
    %可以任意改原调制信号函数m(t)
    $ _9 f$ Q) ?2 T+ h%电子信息工程  杜怀超 091308305  
    0 p& E0 m# K- z# b0 ^) r%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    ) l; Q! L" v9 ^3 n" ]& S; P%*****************初始化******************+ t/ U6 Q9 a7 \2 ^
    echo   off       ( C. O6 s5 T3 p& D
    close  all  f/ q" }9 l- N% }* }7 \  Y
    clear  all
    0 C; |8 R/ r* Y* J5 ~" iclc
    + A. J' ~' u: p2 V0 _%*****************************************
    " j4 k- H4 a# x; q* c%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·- n8 u5 p0 |3 l& p& B
    %****************FM调制*******************
    1 d9 o4 t/ t; X- Xdt=0.001;                                   %设定时间步长6 S, i2 u4 J+ g) t2 ^: `
    t=0:dt:1.5;                                       %产生时间向量& G4 t- B6 Y, [
    am=5;                                      %设定调制信号幅度6 e) Z) R6 }( c% y5 N: h
    fm=5;                                      %设定调制信号频率
    1 N1 s1 M* U, b% |mt=am*cos(2*pi*fm*t);                        %生成调制信号! j2 T$ W5 v7 i* g; O2 z
    fc=50;                                      %设定载波频率
    8 _+ E0 T! {: Zct=cos(2*pi*fc*t);                             %生成载波2 b# Q5 U" ~" u: \4 H
    kf=10;                                      %设定调频指数
    3 F% O& u) s! ]$ ~int_mt(1)=0;! a9 b, P( O6 }' O; ~; d3 V9 h
    for i=1:length(t)-1  
    ) _4 ?0 {5 B. U& D/ z8 c6 S    int_mt(i+1)=int_mt(i)+mt(i)*dt;               %求信号m(t)的积分
    : l( |! h) E7 send                                          %调制,产生已调信号
    + g/ Q$ b& n+ ]1 e- F( Rsfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt);            %调制信号
    * q% |- R2 ]. x" m. A2 R9 [( d2 e%*****************************************' s) _$ x) |' z$ J
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·5 x$ f1 Z; l1 E% a' v, r
    %*************添加高斯白噪声**************" l5 _  @! x3 T' x
    sn1=10;                                     %设定信躁比(小信噪比)
    3 t2 D- i, a+ K5 k( \: Ksn2=30;                                     %设定信躁比(大信噪比)
    3 [5 x; G$ \" H( {, G- y  A8 R+ Dsn=0;                                       %设定信躁比(无信噪比)
    # x7 h4 Q, Q8 @, f3 a+ X1 H. U, Fdb=am^2/(2*(10^(sn/10)));                     %计算对应的高斯白躁声的方差
    ; o  |- u6 k! z8 n& Z" Bn=sqrt(db)*randn(size(t));                      %生成高斯白躁声
    $ R0 Q) L; D* D3 Ansfm=n+sfm;                                %生成含高斯白躁声的已调信号(信号通' l8 \) i- E8 e; s2 _( |8 S' u, J
    %过信道传输)
    1 \) Q2 }- ]9 E%*****************************************
    ; H0 N% Q, @/ O$ L' p( i%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    7 `3 m  H' \2 C8 U9 _%****************FM解调*******************8 R9 k) [1 n# b/ R9 m
    for i=1:length(t)-1                             %接受信号通过微分器处理
    ) O/ s% A( m% @. E    diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
    ) N1 L6 \9 _9 H( Yend9 C# k6 e! t2 z3 I
    diff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)$ Q) w+ @3 K' C0 V: A- p
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;: j0 E. O7 Y6 E. ?# v
    diff_nsfmn1=diff_nsfmn-zero;, @2 q9 O+ \6 @0 a
    %*****************************************
    " m' d% T9 Q! q! y) Q9 C%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    2 w+ X& G9 G. e3 y%**************时域到频域转换**************, e/ m5 X) V8 G# Z( M: B$ h
    ts=0.001;                                    %抽样间隔
    8 f2 m$ }' m/ n) `) L, ^; E& j: q0 cfs=1/ts;                                      %抽样频率9 O: J8 T5 J- T/ l+ m+ y
    df=0.25;                                     %所需的频率分辨率,用在求傅里叶变换
    5 A7 `. p! w9 B. Y. V" G. L8 S5 \%                      时,它表示FFT的最小频率间隔) y/ H5 d8 `/ f' Z0 R5 e7 t5 Z2 W
    %*****对调制信号m(t)求傅里叶变换*****
    * i  D% `5 @" N6 I" ~0 Gm=am*cos(2*pi*fm*t);                         %原调信号
    0 L, s0 w3 c; O6 kfs=1/ts;+ L: N6 k( \' f/ O/ c4 A4 z
    if nargin==20 A( ?( t, m) y, g" }
        n1=0;
    0 q0 ~' l" H$ W3 t5 R1 `else
    0 G3 F9 W) D& u" o/ ~    n1=fs/df;# _( r9 n6 O9 L8 _3 ]: t( s! v
    end) @: A$ W% d+ f+ A, N1 O
    n2=length(m);1 m/ j9 y! R+ \
    n=2^(max(nextpow2(n1),nextpow2(n2)));
    9 o0 y' }$ A3 g: r7 d# X$ tM=fft(m,n);
    1 q' o0 E& v9 b4 ?m=[m,zeros(1,n-n2)];
    6 M- ?) g* J' r2 Q0 {0 M. a5 w: jdf1=fs/n;                                   %以上程序是对调制后的信号u求傅里变换
    0 E, H7 x* D$ eM=M/fs;                                   %缩放,便于在频铺图上整体观察2 O  x: ?- J; ]8 q( Y, b4 J
    f=[0:df1:df1*(length(m)-1)]-fs/2;                %时间向量对应的频率向量
    4 U7 P* u) e" f5 D
    ) q+ @7 k) }% P7 M: Q. X) t% r%************对已调信号u求傅里变换**********
    ; R! T4 i2 ~" m! ^fs=1/ts;
    7 h: E6 t" t; e( a* J3 K3 t$ w5 w8 zif nargin==2
    8 h( {( F/ S. Y+ B2 B2 u, F    n1=0;# K+ g/ {- z' T% O) E: J0 a6 z. _
    else/ ?7 S3 H* s. r# ^5 w4 H8 E
        n1=fs/df;
    " e: d) D, |2 F( X4 c, F) Xend
    3 X0 \) P1 w7 M/ K3 j, dn2=length(sfm);
    % O. b: l: R% k0 ^/ f% H! pn=2^(max(nextpow2(n1),nextpow2(n2)));
    : g9 ^  e9 E8 @7 B2 MU=fft(sfm,n);
    " o% U+ s8 Z) Uu=[sfm,zeros(1,n-n2)];
    ! x6 c% |3 I- S7 u6 h+ w1 Tdf1=fs/n;                                   %以上是对已调信号u求傅里变换1 S# l8 V% [. b( n9 t/ m) Z, O+ i
    U=U/fs;                                    %缩放
    3 g7 {7 m; M6 y- h( m%******************************************
    8 K' H7 f  k' F4 Z% D6 Z! ]0 I+ b%*****************************************
    " n5 y3 i9 Q. }3 |. b$ M%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·5 E* P9 U& `! }. L4 a9 Z9 |: x
    %***************显示程序******************
      K& @' O, G- w1 n* G. L5 i$ X( Y! Idisp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')
    4 b0 f4 Z. Q, M6 ]0 M% Spause
    0 ^$ S4 z9 ^5 W" E5 B( e%**************figure(1)******************. _. F+ V& o+ K' m7 U# K
    figure(1)
    7 X# @) x6 ?. [$ I# ~/ {subplot(3,1,1);plot(t,mt);                                 %绘制调制信号的时域图  _/ d( r4 z. `4 F7 @8 E$ r
    xlabel('时间t');
    8 X, D) q8 g& Y; otitle('调制信号的时域图');
    ; ]/ f: E5 {  D' vsubplot(3,1,2);plot(t,ct);                               %绘制载波的时域图
    : K  l+ l3 ]. `; z" J1 v+ m8 b! c3 Lxlabel('时间t');
    " Z) Y( i: R) b  Q" ]title('载波的时域图');8 N$ x- ~& x/ N: f( t
    subplot(3,1,3);
    0 O( m- q. I# S9 ?: o' a8 y2 A- s0 U7 zplot(t,sfm);                                                  %绘制已调信号的时域图
    2 x% c/ `, S+ Dxlabel('时间t');5 J* Z! Z6 R+ x! m. ^
    title('已调信号的时域图');
    ( W6 `2 [' w. a; D%******************************************) `# C4 H& E$ r
    disp('按任意键可以看到原调制信号和已调信号在频域内的图形')
      o3 z* L" y& N- Y4 Ppause; \; z. l9 E4 L" G% Y  c* `2 J
    %************figure(2)*********************; ^" |; ]; n' V6 `1 j  E! f
    figure(2)/ e1 ~7 _: U' x* I  l' f
    subplot(2,1,1)
    % l' U! a* O) T. v: tplot(f,abs(fftshift(M)))                        %fftshift:将FFT中的DC分量移到频谱中心
    + }; D% ~& |9 s) I$ I6 v0 Oxlabel('频率f')3 L' U; J1 G# Y
    title('原调制信号的频谱图')- [6 y; q9 `$ D1 b* k
    subplot(2,1,2)
    ( Y& @3 o. q+ \( |6 A) Iplot(f,abs(fftshift(U)))
    3 [6 \/ k5 ^6 hxlabel('频率f')
    4 G* {3 o  W" |2 v1 [title('已调信号的频谱图'), o3 N  R1 J/ F. f4 T9 w
    %******************************************
    4 B6 D, A6 j+ }disp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')4 P. Z$ S2 B7 i$ F: ^
    pause
    & y& s) ^+ c) l8 h7 S# j%**************figure(3)******************, a. A7 G# J  |' g  r
    figure(3)' Q3 q# X0 E8 |# G4 b2 C
    subplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图
    9 n7 K* ?; v; B9 n# e0 {/ V- w( wxlabel('时间t');  |% x4 m1 C, P+ Z# e1 {, ]
    title('调制信号的时域图');# k) `- Q9 v% ~& a$ Q8 P9 P
    subplot(3,1,2);plot(t,sfm);                              %绘制已调信号的时域图, R6 o0 |$ f9 E# h# p, t$ ]+ y
    xlabel('时间t');
    2 h1 T$ K' Y- M* v6 b% xtitle('无噪声条件下已调信号的时域图');6 v7 t$ v0 |4 e9 g  i& R
    nsfm=sfm;                              8 N% h1 Q7 t" y9 s; J
    for i=1:length(t)-1                           %接受信号通过微分器处理
    ! {+ E# u! J, q6 @+ k    diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;  i7 y, |. q8 o2 Z0 G
    end
    $ P" Q" R  O2 }* y2 Bdiff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)  W# V! L& H* \& I/ ~
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;& p* O2 Z/ ?$ N9 w) C# a; [
    diff_nsfmn1=diff_nsfmn-zero;) [! }7 y  Z: c% J( q, q( J' g* T
    subplot(3,1,3);                             %绘制无噪声条件下解调信号的时域图
    / l8 O2 n: z& ?1 m6 jplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
    , A4 |. K5 K$ Y) h# U! axlabel('时间t');                          3 d$ D9 k- e& i! g
    title('无噪声条件下解调信号的时域图');
    6 j3 M- q4 G  p! s7 B%*****************************************; e- W) L. p4 M' M# O- ?; d
    disp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
    . m( \. g* i8 C. c# @- m3 i" dpause
    . w! i2 T5 ]5 s, U& o%**************figure(4)******************+ I6 u; c5 {4 v7 @, g
    figure(4)
    " V4 ~4 ]7 p" o  j4 C$ \subplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图$ D* y5 F  @. W: ~* r
    xlabel('时间t');) l( e6 D$ p5 ]
    title('调制信号的时域图');  W& T$ C7 \3 W& N
    db1=am^2/(2*(10^(sn1/10)));                   %计算对应的小信噪比高斯白躁声的方差
    / L. `4 l$ n; `/ U$ x0 u4 mn1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声
    : H  x/ Q; U- X" {+ o6 R& Xnsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通
    & w( Z; G9 d0 F: R- A; T4 K7 H' z; d%                      %过信道传输)5 U" J7 ~' O& t. b! d- {
    for i=1:length(t)-1                            %接受信号通过微分器处理
    ' I' Z' H" }4 Z5 C' g! p( V* |    diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
    " d: a% i+ {6 f/ @/ s- bend6 v$ ^- d$ o9 Y- V+ ~
    diff_nsfmn1 = abs(hilbert(diff_nsfm1));   %hilbert变换,求绝对值得到瞬时幅度(包络检波)
    1 m" s8 ~% f8 d- r5 f, g, T8 E* qzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;4 w" |3 @3 H& R) m9 P' M$ A
    diff_nsfmn1=diff_nsfmn1-zero;
    " R3 N: s- r0 osubplot(3,1,2);
      S- M: X' \' f* hplot(1:length(diff_nsfm),diff_nsfm);      %绘制含小信噪比高斯白噪声已调信号的时域图, @* l0 [; o) h! \& B$ l
    xlabel('时间t');  I# l4 @, Q  T* M" h; S+ _
    title('含小信噪比高斯白噪声已调信号的时域图');: U5 Z8 u# Y4 x2 R" f! G1 W5 Q
    subplot(3,1,3);                        %绘制含小信噪比高斯白噪声解调信号的时域图
    5 G4 Z8 Z( ], `. m9 ]plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
    4 f5 X9 K: K/ ]2 L3 `$ Y  qxlabel('时间t');                          
    / f9 U8 w+ _) Ctitle('含小信噪比高斯白噪声解调信号的时域图');
    3 j* m0 \" X: D0 A! i+ y1 d%*****************************************+ E+ B! g$ r* ?( f- h
    disp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
    / Q# |0 ?* u( Qpause. f0 s6 Z# l" I- V3 S0 v% F
    %**************figure(5)******************9 y' ]- K8 Q# r5 c2 W! N' O% a
    figure(5)
    5 w; F1 Z% w5 y: o5 `, {3 K& qsubplot(3,1,1);plot(t,mt);                                   %绘制调制信号的时域图& K( I' ?# w) y. A7 ]! \' _) s0 p
    xlabel('时间t');' s3 P$ ]+ e; c9 V# S
    title('调制信号的时域图');' o& W- R" s( r0 o4 K  H
    db1=am^2/(2*(10^(sn2/10)));                   %计算对应的大信噪比高斯白躁声的方差; R9 B1 ]1 q& `" y
    n1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声& }2 _' j" e+ v' B* B
    nsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通过信道传输)
    / A) J) o" O7 [8 t5 Y/ @  U; wfor i=1:length(t)-1                             %接受信号通过微分器处理; L* y; z# R- e4 _# B% @/ _# M
        diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
    + R* M" e# y- n# T# H& nend* Y# ^9 X0 O. F. }
    diff_nsfmn1 = abs(hilbert(diff_nsfm1));            %hilbert变换,求绝对值得到瞬时幅度(包! ~  ^+ \. `$ L( T; s! G
    %                      %络检波)
    , Q: E& }4 {3 H# p! n( G5 Hzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;7 f) n* }! s7 h$ K6 p/ q
    diff_nsfmn1=diff_nsfmn1-zero;
    . \' c6 o. x; s  M9 gsubplot(3,1,2);4 V$ q# }; q* y4 i0 G: j
    plot(1:length(diff_nsfm1),diff_nsfm1);             %绘制含大信噪比高斯白噪声已调信号- \3 F. u/ }5 q; A3 z' v
    %                      %的时域图3 G& Q' `; ?( f7 Q9 j5 k% V4 l
    xlabel('时间t');
    % l$ A$ v( Q2 [+ _title('含大信噪比高斯白噪声已调信号的时域图');: O" f. ~2 I" l% T$ T! G: y. v
    subplot(3,1,3);                                %绘制含大信噪比高斯白噪声解调信号: o$ M' T. L. P# }( E# j1 Y
    %                      %的时域图6 t4 |+ |' k/ t; b
    plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
    ' u# B* H0 N: Y, Dxlabel('时间t');                            " D" Z) ~. b7 ^+ l+ T
    title('含大信噪比高斯白噪声解调信号的时域图');& a7 l3 ]$ ]$ _3 r1 C2 ]
    %*****************************************9 ?4 r3 H6 h7 W! D9 Q
    %******************结 束*******************
    # d. l6 @/ _0 {' A* c+ H5 }
    " a3 ]: R8 k3 S; x6 h6 |3 d( }/ m3 m
    2 V  k# F  P' d$ z# i2 p7 P; W2 g
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    李秋锐        

    14

    主题

    14

    听众

    76

    积分

    升级  74.74%

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

    [LV.4]偶尔看看III

    社区QQ达人


    $ x4 [6 p2 ~; m! _- h# l3 k
    # z& H& e7 D! X0 X6 P5 Z( O" z7 c/ b+ E! C  K0 L& P. n2 z! g* G
    。。。。。。。。。。。。。。。
    0 v9 {7 a% F* n, ~" L1 o* v' t  g4 C5 f( w% |5 ], |: _
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-6-14 19:00 , Processed in 0.430170 second(s), 61 queries .

    回顶部