QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2140|回复: 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* v1 s  a) e( B# a
    %频率调制与解调的Matlab演示源程序
    - W9 a* }+ @) F" T+ M) n* ?%可以任意改原调制信号函数m(t)
    ' |& P& C1 b0 j5 q%电子信息工程  杜怀超 091308305  
    / x* r( v7 }, Y- I1 l%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    ' o* q# Y: i7 G%*****************初始化******************
    / N$ X' E1 S7 {* m9 E* Mecho   off      
    ! h5 ~' _- [& @( n% pclose  all1 D3 l' E# A2 [9 g1 O
    clear  all
    & f7 d& D7 }) V) W; ]; s# k% {* O/ yclc& n# B! n) N8 ]1 U& v
    %*****************************************
    7 L0 g; }4 `2 v2 \* b4 Z& E% y%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·" C! v! y  v- G" F3 z( s
    %****************FM调制*******************
    ! c6 t( @& v5 a1 J/ J3 @dt=0.001;                                   %设定时间步长
    % A: `3 U! I3 j) Ft=0:dt:1.5;                                       %产生时间向量' [5 \, @' e2 i4 l5 T
    am=5;                                      %设定调制信号幅度
    ( Q. `, y  w7 F, u! sfm=5;                                      %设定调制信号频率
    9 j- D# f) H. W  h! W) imt=am*cos(2*pi*fm*t);                        %生成调制信号
    & X! }2 P0 M0 A! bfc=50;                                      %设定载波频率( T. ^: o& Z  @: q3 W/ h
    ct=cos(2*pi*fc*t);                             %生成载波
    ' f2 x6 c* z9 g/ ^/ x; \' ikf=10;                                      %设定调频指数' ]& l) ~% |0 J2 x1 }( z
    int_mt(1)=0;+ o7 V5 S4 [9 w
    for i=1:length(t)-1  5 W% X* ^+ E  ?/ W  ]- c; W! Z8 {
        int_mt(i+1)=int_mt(i)+mt(i)*dt;               %求信号m(t)的积分
    + H; |/ ]3 T! R  Kend                                          %调制,产生已调信号' w. l6 ^5 p+ k* |3 p9 a7 H
    sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt);            %调制信号
    % p, K" K9 ]+ }+ k" w1 R/ n%*****************************************6 N) Z; }, v0 J
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·. f; L- H/ `; \+ y7 e1 D  x. Y
    %*************添加高斯白噪声**************
    : X0 x  _: Z/ X" s4 ?9 xsn1=10;                                     %设定信躁比(小信噪比)3 ^$ M# R) E  f( V% @( S8 O5 k
    sn2=30;                                     %设定信躁比(大信噪比)
    % i+ @0 H0 d$ m  G  ?1 usn=0;                                       %设定信躁比(无信噪比)
    8 @0 ]# ?8 `3 C6 u% Tdb=am^2/(2*(10^(sn/10)));                     %计算对应的高斯白躁声的方差' [5 g) y+ [  l3 `
    n=sqrt(db)*randn(size(t));                      %生成高斯白躁声
    1 v& X$ }# t& E  j( xnsfm=n+sfm;                                %生成含高斯白躁声的已调信号(信号通
      l  x$ K- K. e/ S+ Z%过信道传输); t' T# H+ j( y5 K
    %*****************************************) S- W/ D1 e' f' C, {
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·1 |* K5 v' g) L% k
    %****************FM解调*******************
    $ E1 Q: }; e: ^0 L$ P* Q4 a6 z% S+ ifor i=1:length(t)-1                             %接受信号通过微分器处理
    $ b) y+ A! y' D* `    diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;9 w# x  z& N3 J0 O8 J0 [- D
    end9 N  v3 k: w, ^" D
    diff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)' {% s. w& M: C, \% Q6 T! H
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    9 q# h( K+ ?: J7 y2 g. ddiff_nsfmn1=diff_nsfmn-zero;/ V5 F; L# c9 Z5 L1 s
    %*****************************************
    $ F! ~% |- Y/ j+ @7 E% g: U: \% h2 |%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·7 [6 b' ?/ M8 y- P7 H  {! ?
    %**************时域到频域转换**************
    6 |/ ?4 d2 t7 Its=0.001;                                    %抽样间隔
    0 r% q3 G, e) W5 X* Afs=1/ts;                                      %抽样频率3 }8 d; O5 {, Q6 I( g& o
    df=0.25;                                     %所需的频率分辨率,用在求傅里叶变换
      ?, e+ Z9 `1 l/ Y8 b5 n%                      时,它表示FFT的最小频率间隔* J2 e6 z! a. s- e. h  c
    %*****对调制信号m(t)求傅里叶变换*****
    & r1 l, n/ Z9 V* Xm=am*cos(2*pi*fm*t);                         %原调信号% O0 I* A. H% H* G- ]
    fs=1/ts;6 ]$ r( v) h% O
    if nargin==29 [# L) f$ `& l9 V
        n1=0;& E7 X/ S0 j3 y/ Q" g" a! e  f
    else* I( A; c  i9 h9 y+ u5 x  b. ?
        n1=fs/df;; z, G7 i" z( \5 x& D& w7 }
    end
    * a' Q5 m+ \6 v7 Q, R" Q3 q! un2=length(m);
    . ^2 R$ t0 H% I3 N" A3 H, W: In=2^(max(nextpow2(n1),nextpow2(n2)));
    & W! `4 \. g7 q1 h0 k- m( I- KM=fft(m,n);
    8 C+ A7 {+ `( K% ]  t5 Um=[m,zeros(1,n-n2)];& G& L, ?; U7 G  y1 H# Q
    df1=fs/n;                                   %以上程序是对调制后的信号u求傅里变换- j# ~/ V1 N1 u. Z( r, {
    M=M/fs;                                   %缩放,便于在频铺图上整体观察
    . ~8 A6 x' X5 x! uf=[0:df1:df1*(length(m)-1)]-fs/2;                %时间向量对应的频率向量* v7 w- n, N. x' L7 O) ?9 |7 E
    % O8 D; P0 X7 E
    %************对已调信号u求傅里变换**********6 z9 R2 l& a8 ~4 B, R+ q; z
    fs=1/ts;
    * p& P: K/ B$ S! e9 g; Bif nargin==2
    9 M0 q! |% t' m+ ?3 ~    n1=0;/ S. F9 H0 G( I+ k, Q
    else
    5 l; C: G0 w& q7 r" d, m" r6 [    n1=fs/df;
    4 s$ w/ u# ?9 Yend9 P& N2 d( e4 g1 N
    n2=length(sfm);3 M- i9 D0 Y8 A
    n=2^(max(nextpow2(n1),nextpow2(n2)));
    ' e; Q: Q4 e  ^+ q2 E% kU=fft(sfm,n);, @* p( G8 F, |+ P) l1 g
    u=[sfm,zeros(1,n-n2)];/ e( e  |3 ]+ H# z
    df1=fs/n;                                   %以上是对已调信号u求傅里变换% j9 L  r1 B/ R2 Y" `; y
    U=U/fs;                                    %缩放- j: w- q2 }& s! p
    %******************************************
    % m: l- ~% {" \/ N$ ]# E  e%*****************************************  Q* }9 Z& y6 w/ k  O
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·3 \9 t4 {0 U+ O6 V: M3 |8 {
    %***************显示程序******************
    % X1 N- [5 {' R: ydisp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')
    : x! S# \# e: x2 [2 b# ]pause
    ( t+ ?& N" a% r- c. _3 S%**************figure(1)******************6 w* M; }+ m3 ^+ H7 Z
    figure(1)& z  s& r3 k/ r2 g: Z5 ?. }2 ?
    subplot(3,1,1);plot(t,mt);                                 %绘制调制信号的时域图7 i& ?1 D1 T% @/ C
    xlabel('时间t');$ N3 u% M; }9 K
    title('调制信号的时域图');
    $ r9 I: W$ J; W7 k4 F; |+ S# fsubplot(3,1,2);plot(t,ct);                               %绘制载波的时域图4 i" g& C( h6 D! L! {( p4 N5 {
    xlabel('时间t');
    + u. S- d7 L2 j# \- n' Mtitle('载波的时域图');
    , [% m3 P; g4 k9 j1 V' ?. b  csubplot(3,1,3);" L% G, A- y- f( i4 Z
    plot(t,sfm);                                                  %绘制已调信号的时域图
    8 m4 H$ m- x: Q1 xxlabel('时间t');: ?# j7 y; n, Y" N9 J8 z$ a0 v0 S: `
    title('已调信号的时域图');
    ! {! w! l) \7 f) e2 E%******************************************
    ( \% j4 i& V5 m; j3 ^disp('按任意键可以看到原调制信号和已调信号在频域内的图形')
    & ]" a$ ?( @- \7 qpause0 ~, w3 B+ N* b5 o: ?
    %************figure(2)*********************
    : L* Y  ^0 K8 J1 e: k: q  H' }figure(2)* R7 t& Y3 Z  Q! E8 ^
    subplot(2,1,1), }  D3 C' H3 ]  P0 o% ]
    plot(f,abs(fftshift(M)))                        %fftshift:将FFT中的DC分量移到频谱中心& c* l6 U$ B9 x: Y. \' }$ b' J" ^
    xlabel('频率f')
    ' c* @3 b1 q5 V+ n# Mtitle('原调制信号的频谱图')( [  |' r% g# b% Z1 `5 O
    subplot(2,1,2)
    0 y. b& \4 v1 n: b/ ^( D& kplot(f,abs(fftshift(U)))$ E, k: _5 q2 I6 y, G
    xlabel('频率f')
    # d3 P" Y6 v, R& N0 e. mtitle('已调信号的频谱图')
    8 q# A9 Y% S% r$ X%******************************************* v3 _& z8 ?, j) u+ J5 ?
    disp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')
    2 H: Z9 D; u4 r9 T0 n. Z" f* [* G) Qpause4 w# V/ q& B( B& f1 Y
    %**************figure(3)******************  S6 a  W5 ^- l. ^5 E* K0 @/ W$ r2 ?
    figure(3)
    7 \) C) e3 E- e( n) F& [) I+ t1 bsubplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图  j+ S# x, A2 @( F0 R- ]  `
    xlabel('时间t');
    : t5 b1 C# z, Ntitle('调制信号的时域图');
    3 U  Q- B: S. }  Z. K; j8 ysubplot(3,1,2);plot(t,sfm);                              %绘制已调信号的时域图
    / J- G' e4 V: Y8 }: txlabel('时间t');
    , ?; G7 z3 e# c' G) Ztitle('无噪声条件下已调信号的时域图');6 A0 e, t/ M; _2 p2 L% \  b
    nsfm=sfm;                              
    / c" k( P+ w( u* s& Y3 Q+ v. Pfor i=1:length(t)-1                           %接受信号通过微分器处理
    $ S, j) V5 F& H    diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;" F( i& ?  n+ E7 h. [
    end7 Q  K* x1 ^' q7 X% w0 B
    diff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)
    + }! V% _9 t$ T. E+ j! `9 vzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;1 I1 U3 }# I4 m8 o5 {
    diff_nsfmn1=diff_nsfmn-zero;! N: w5 T- O. K5 m# D  r. x
    subplot(3,1,3);                             %绘制无噪声条件下解调信号的时域图
      W* q2 q* k- F6 f* Kplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');! z6 s6 Y" b- c; ?
    xlabel('时间t');                          
    : ^5 y8 v7 J% P5 }' g$ btitle('无噪声条件下解调信号的时域图');
    3 n1 Z' L7 {$ u+ Q%*****************************************
    6 a0 U6 D; t" i1 Odisp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')/ Z! w) E) m! g9 N+ f
    pause
    6 v" Z# M( `% z$ x) G. b" a%**************figure(4)******************
    4 h' T) m$ a& b  W2 dfigure(4)
    & Y. ]) r% O2 J9 Jsubplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图
    ( N9 ^8 q  Q5 i: ?0 }! u1 Z+ O  [7 qxlabel('时间t');3 q% d; q# h4 O+ d9 D5 _# V- k0 v
    title('调制信号的时域图');3 _$ C3 R: r0 @- m, h$ J* F
    db1=am^2/(2*(10^(sn1/10)));                   %计算对应的小信噪比高斯白躁声的方差2 O' s% F# D- k1 H; j8 o
    n1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声
    5 v* B$ X; j" i& R" onsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通
    4 U" R& l* ?& I+ m% ~+ p%                      %过信道传输)/ G. G) b, K( Z7 T6 G
    for i=1:length(t)-1                            %接受信号通过微分器处理
    / h. ^3 |# W9 s5 [, ?* h$ |    diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
    9 P4 n+ y  W1 ^  tend
    * i: u) W* M# I2 `7 fdiff_nsfmn1 = abs(hilbert(diff_nsfm1));   %hilbert变换,求绝对值得到瞬时幅度(包络检波)- S! R; H+ i7 C$ y8 m8 p. I9 a) N
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;  Z" F9 H7 n  R6 v- E# O& C
    diff_nsfmn1=diff_nsfmn1-zero;4 r* {! u- V* U( t. h- a# `2 l
    subplot(3,1,2);
    5 K0 K1 {, y8 D9 O% Q0 y. K' k* v+ uplot(1:length(diff_nsfm),diff_nsfm);      %绘制含小信噪比高斯白噪声已调信号的时域图
    ! O- A0 o. t5 }; {xlabel('时间t');
    1 }7 w4 \5 a7 W% k* ^title('含小信噪比高斯白噪声已调信号的时域图');
    2 [9 i) o: S) _. fsubplot(3,1,3);                        %绘制含小信噪比高斯白噪声解调信号的时域图
    * Y% L/ P$ A3 ~2 |plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');5 Q/ N2 |) C0 `" V  L
    xlabel('时间t');                          7 G% Z! Z2 A4 y+ A
    title('含小信噪比高斯白噪声解调信号的时域图');
    " m) r0 {/ V; e: p5 S) N%*****************************************
    4 j# ~$ K9 K5 p$ H- z; Adisp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')( L; h" H) L8 J! d- q( O4 P; H
    pause
    . L; J2 l; p( z- [5 ~& ~' z%**************figure(5)******************
    ! z0 ?  W/ Y( d. J# Jfigure(5)
    ; \- \% O) z' H" }# Rsubplot(3,1,1);plot(t,mt);                                   %绘制调制信号的时域图/ `- M( F2 N# O$ [- g' K
    xlabel('时间t');# E  N! m% ~$ R2 R, l, G
    title('调制信号的时域图');
    - ]$ c# _* p% S7 d, C* X6 ~$ n2 xdb1=am^2/(2*(10^(sn2/10)));                   %计算对应的大信噪比高斯白躁声的方差3 w( ^8 E5 p5 z' s. S1 c8 O: v7 N
    n1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声
    : T: r8 b- o# w  o7 A( Onsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通过信道传输)
    0 T* c6 p1 P/ T, Yfor i=1:length(t)-1                             %接受信号通过微分器处理
    & T# @& Z& [3 Y" |1 V# w* U    diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
    1 ^, {6 u& F, D" T4 dend
    8 \2 s2 Y9 ]. C8 M9 L2 G# s/ v; h2 ddiff_nsfmn1 = abs(hilbert(diff_nsfm1));            %hilbert变换,求绝对值得到瞬时幅度(包; r( z/ y  R8 r' R3 k) Q5 X
    %                      %络检波)" i1 ^1 w8 Z4 D8 f3 T+ {
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;- L6 g( g3 [- |
    diff_nsfmn1=diff_nsfmn1-zero;
    ) u  t$ Z: l% O& y) v( m5 Jsubplot(3,1,2);
    4 H9 r; y  x* D/ Tplot(1:length(diff_nsfm1),diff_nsfm1);             %绘制含大信噪比高斯白噪声已调信号5 D8 u6 \6 X; v$ C5 c0 R% ~# n
    %                      %的时域图& a4 I! J! K! U1 @
    xlabel('时间t');
    8 X6 m) a) O6 F7 Stitle('含大信噪比高斯白噪声已调信号的时域图');! G6 U" y4 X1 j0 m' |/ v, J
    subplot(3,1,3);                                %绘制含大信噪比高斯白噪声解调信号
    ) O1 k5 r8 V! H4 B- D( z, S%                      %的时域图* K( @9 I) w2 O) E
    plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
    $ v2 }/ V5 E0 K3 lxlabel('时间t');                           
    # a( Z* M9 j, o* E- l* mtitle('含大信噪比高斯白噪声解调信号的时域图');. `& s% \; u" m7 G5 _( y/ w# @
    %*****************************************8 \9 H* ~# G- A3 n. H
    %******************结 束*******************
    " D: H6 J" h2 R5 G; K
    ) E# ~% C' P/ h; _" L3 n& [0 q6 [) t" ~, @' x
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    李秋锐        

    14

    主题

    14

    听众

    76

    积分

    升级  74.74%

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

    [LV.4]偶尔看看III

    社区QQ达人

    ( c) b$ C# R' D- f8 ]
    3 a  P) y* }6 q- M

    4 i4 n7 d: ~/ J+ ~* b0 S5 h" x. O  s+ Q。。。。。。。。。。。。。。。
      B& ?* p  B+ D) M+ y0 k$ e) R
    * F0 z1 L- d$ ]. E3 ~
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-6-17 03:55 , Processed in 0.431460 second(s), 59 queries .

    回顶部