QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2129|回复: 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调制解调系统.m4 S( P) ^$ m) `7 ~
    %频率调制与解调的Matlab演示源程序$ p  v4 S2 l" R1 x% `
    %可以任意改原调制信号函数m(t)/ h2 m8 D  |" K: \8 n) _
    %电子信息工程  杜怀超 091308305  
    6 b) l6 m- X: K: G" T  {%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    9 A+ X* u8 n( T- ^8 a5 p6 u%*****************初始化******************8 `4 x, E5 B) K8 V, f- n) F
    echo   off      
    ' N/ ?& `3 T7 Z$ `& @close  all# p8 s# u) l& k$ O
    clear  all$ ]6 h) X7 |  N( P  @/ q
    clc6 @; m) {. j3 |
    %*****************************************5 I; _. h" H: U0 N, x  q8 W
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·9 M! z+ R( e( n1 P+ U
    %****************FM调制*******************
    & b2 e5 ?; ]7 V5 q+ cdt=0.001;                                   %设定时间步长5 V. `5 w  [! b% V
    t=0:dt:1.5;                                       %产生时间向量- i: q3 e' \0 V1 V( {5 R: \- i
    am=5;                                      %设定调制信号幅度
    3 d& m% y' _, w& B- r7 p5 Cfm=5;                                      %设定调制信号频率  N8 x" V: [3 V' r) s
    mt=am*cos(2*pi*fm*t);                        %生成调制信号
    9 u$ f9 q6 Y" z- D' Rfc=50;                                      %设定载波频率
    - G8 \0 {7 u; |4 s5 ~ct=cos(2*pi*fc*t);                             %生成载波+ u1 T% O% W* C9 y5 m( ?' D
    kf=10;                                      %设定调频指数
    : N: }' O0 T0 nint_mt(1)=0;5 B7 P; f# J6 @- n
    for i=1:length(t)-1  
    ; J8 X9 G2 w6 s/ K! D# Q    int_mt(i+1)=int_mt(i)+mt(i)*dt;               %求信号m(t)的积分
    & a9 T$ V- ~. q$ E: e! w2 F4 fend                                          %调制,产生已调信号" I  `! [0 R0 X- y
    sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt);            %调制信号" J% X, h+ f+ @
    %*****************************************
    / [2 W' F8 s& g$ R4 q; y; p$ r6 c%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    3 e( F; J2 R- u%*************添加高斯白噪声**************
      h2 a- ?- B3 v5 [& E" Y: Tsn1=10;                                     %设定信躁比(小信噪比)
      R# D2 ?& b6 g8 O1 t% e, P( m, W0 y' Psn2=30;                                     %设定信躁比(大信噪比)
    3 t9 d" B" `! r. D) Vsn=0;                                       %设定信躁比(无信噪比)4 Q% D) P+ T2 t& t8 |6 R' w
    db=am^2/(2*(10^(sn/10)));                     %计算对应的高斯白躁声的方差
    6 Q8 n4 n9 {: B8 \2 I/ z, On=sqrt(db)*randn(size(t));                      %生成高斯白躁声
    6 X! m7 j( U  W! t0 L' q$ Ynsfm=n+sfm;                                %生成含高斯白躁声的已调信号(信号通6 n- m6 t) H" C* t. {) ?
    %过信道传输)
    % _" O; U) B( K) m4 s0 K%*****************************************
    : ]$ U, `' D6 L$ }: K%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    / v) w/ Z7 ]( l# j6 z% M%****************FM解调*******************
    ; Q9 `1 c/ R& s- @) Bfor i=1:length(t)-1                             %接受信号通过微分器处理/ S; J0 g1 n2 }2 o9 u5 U, ~' T9 @* _
        diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;/ i, l4 U: E; C6 @' q
    end5 Y( a2 T5 M$ n. q/ P
    diff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)
    " z! I8 o9 K1 @7 C2 U; `zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    % S! R6 q4 k/ X  I2 idiff_nsfmn1=diff_nsfmn-zero;0 a9 |+ c; x6 {
    %*****************************************
    " c% [$ v7 \3 X$ U%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    ' ?, c- a( G1 \3 N3 X%**************时域到频域转换**************- N" k. N  P# v2 M
    ts=0.001;                                    %抽样间隔
    & u9 {1 }# i* G: I: tfs=1/ts;                                      %抽样频率
    + H9 }5 j7 h. Y+ d# adf=0.25;                                     %所需的频率分辨率,用在求傅里叶变换
    9 ?0 r5 M2 A, l& n7 l. H%                      时,它表示FFT的最小频率间隔# ^' R+ V9 I' V, L; }
    %*****对调制信号m(t)求傅里叶变换*****" t. J, L  P3 u- c4 t2 I: R
    m=am*cos(2*pi*fm*t);                         %原调信号
    : G) e+ ~! W# |/ yfs=1/ts;
    $ {; u# G) o2 Rif nargin==2; h  r7 s; C1 P* z7 l2 b! g; i" T! i
        n1=0;; C$ R# O2 H' u' k5 K5 M5 W
    else
    8 q! t" v( k7 |* F% e    n1=fs/df;" p3 r+ H3 d& s
    end$ u3 {9 d. s+ ^, O# Y6 d% m
    n2=length(m);0 r: `/ e  k2 e- Y0 R+ V* l; G* L- X
    n=2^(max(nextpow2(n1),nextpow2(n2)));
    0 y- b! F2 J2 o) {M=fft(m,n);
    6 l% }5 _/ w; ~* V( Qm=[m,zeros(1,n-n2)];2 ?% {1 @2 v* ~+ l) d" ?- Z1 B
    df1=fs/n;                                   %以上程序是对调制后的信号u求傅里变换2 ~8 S& ^8 u7 F+ a' C
    M=M/fs;                                   %缩放,便于在频铺图上整体观察
    8 }1 ~0 K8 M% u1 N+ x- `& Jf=[0:df1:df1*(length(m)-1)]-fs/2;                %时间向量对应的频率向量+ Z% O; i  q- N4 e, Z

    # A+ h3 g3 a6 c3 I9 b%************对已调信号u求傅里变换**********
    ' `2 x  ]" F& j. \* W6 g9 f/ vfs=1/ts;' Q/ |' K0 z7 {2 x
    if nargin==2# m" e1 [0 W! h) \- O8 f: S
        n1=0;! u5 C8 M  p$ g3 ]
    else# H% @% n: L5 Z. s' W- z; [1 j1 b
        n1=fs/df;+ Y- P2 Q' \8 F, Z, K5 {
    end3 \8 X& {: ?! }. @
    n2=length(sfm);$ v  K2 k; p) ?" c
    n=2^(max(nextpow2(n1),nextpow2(n2)));
    1 X! L; G3 t1 G5 W4 q% j' WU=fft(sfm,n);  O0 t2 w* f$ S
    u=[sfm,zeros(1,n-n2)];3 y3 [" e' a. h2 k3 g7 ]
    df1=fs/n;                                   %以上是对已调信号u求傅里变换, z/ [1 u" P' b
    U=U/fs;                                    %缩放: V7 B5 {# `1 D9 x
    %******************************************
    ' D- ?* M$ _7 L7 e) A. h6 s: e%*****************************************( E9 Q0 @9 W" |6 P6 }7 z5 R
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·( C3 [2 f6 Q7 N
    %***************显示程序******************
    * \, ^  k) J+ g' M( {: edisp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')- b# T9 U9 i& {. Q1 s/ O3 u/ r* v
    pause
    0 |6 M4 c( }: U6 x  y8 _. y%**************figure(1)******************
    9 ~' P9 `' N" Pfigure(1)8 W. Q& [- X; u1 t6 u5 ?' o
    subplot(3,1,1);plot(t,mt);                                 %绘制调制信号的时域图! z& F- L7 Y' |) l( }
    xlabel('时间t');- A5 P7 \- T* y$ Z
    title('调制信号的时域图');; Z7 _+ w6 l" L1 ?' Q
    subplot(3,1,2);plot(t,ct);                               %绘制载波的时域图
    * `! C& R2 s' o$ y- g: ]xlabel('时间t');0 K! B# h) z" K  d6 z- \
    title('载波的时域图');5 N, C! K/ s% v, ?$ d9 W
    subplot(3,1,3);1 L  \* N# x0 L8 ?/ K. f  {
    plot(t,sfm);                                                  %绘制已调信号的时域图
    + u; R( l. R: b/ @* S* e, A. L3 [- A: ixlabel('时间t');
    & R; A+ _1 A# Otitle('已调信号的时域图');
    ! R* ^( C/ Z* ^' W8 n- I%******************************************
    : L5 T: `" H+ L3 zdisp('按任意键可以看到原调制信号和已调信号在频域内的图形'). a$ C8 c4 h) q# L; h0 f
    pause
      x/ {( y* {+ z' X2 E- n8 n%************figure(2)*********************6 i) h4 @- Q: k0 S: @
    figure(2)
    7 c4 g- v5 }- o  H& e3 x+ L# osubplot(2,1,1)
    9 `; i+ @0 Z) |9 {plot(f,abs(fftshift(M)))                        %fftshift:将FFT中的DC分量移到频谱中心9 \; j0 z6 m1 S
    xlabel('频率f')
    & s) ]; q4 T! `/ x" f' g: ]. R& {title('原调制信号的频谱图')
    - U" S4 i9 q  {2 r: b8 v; Q/ csubplot(2,1,2)
    " Z6 o) Z4 g7 K. s% B2 Tplot(f,abs(fftshift(U)))
    0 A' \" z: Q- ~# |3 V- l( rxlabel('频率f'): }) f9 V1 c) T- F) \
    title('已调信号的频谱图')
    1 E, b4 }5 Q1 K* \+ @) a! R, S# c%******************************************0 U. T6 M2 ~1 |9 P
    disp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')
    ' }7 J9 G5 H: e( f: Xpause
    0 c! [* N0 W; `9 V8 G; F%**************figure(3)******************; v& G+ N- T. E1 P; U
    figure(3)
    3 m1 B5 V& M6 M1 t- {9 isubplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图
    $ _, e8 n6 M! i7 K" Dxlabel('时间t');
    & G4 Z0 m( _3 e) {1 Vtitle('调制信号的时域图');# J; P% H9 V3 h! F# K# |- E
    subplot(3,1,2);plot(t,sfm);                              %绘制已调信号的时域图
    ; X4 P" j9 R6 E  bxlabel('时间t');7 S7 R1 L* x7 m% R6 {
    title('无噪声条件下已调信号的时域图');: D, D8 [1 @$ u# ?  ^" G5 M9 H
    nsfm=sfm;                              
    5 G/ l, F. i! q, v; _, efor i=1:length(t)-1                           %接受信号通过微分器处理
    ( o/ Z6 E) ~; g9 ^/ @1 R! X) k" z    diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;5 s5 U% P$ p! w5 _% E- \) Y$ c
    end
    * m# D' v* {# e" P. ?9 W! |9 {diff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)+ \" ]" O1 V; s) n7 R. s% G
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    4 S  H! v- b  e0 z3 b  s# hdiff_nsfmn1=diff_nsfmn-zero;
    0 m+ k7 j/ I/ L% vsubplot(3,1,3);                             %绘制无噪声条件下解调信号的时域图
    * u4 L) N1 v& z( U6 y: I% Cplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');) s: D" `  z* V! j4 n
    xlabel('时间t');                          
    ! W( I/ O( \9 l& O- g$ otitle('无噪声条件下解调信号的时域图');
    * h5 N! `' g# Y; T* c& |* }%*****************************************
    : }8 D0 x: o6 l3 H2 vdisp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
    - V3 ~; y) b# t: a1 e, Zpause
    ( S* Q* S; v$ j7 A; w( m, |8 H%**************figure(4)******************
    ) l5 ~: d3 {$ H7 Gfigure(4)
      t% y3 E+ h! Y$ rsubplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图3 `( p  {9 b* ?+ H0 y1 a. s
    xlabel('时间t');
    6 E# S; ]6 i3 W6 m& a6 s6 gtitle('调制信号的时域图');) s! w# @% g- a& @  U9 C
    db1=am^2/(2*(10^(sn1/10)));                   %计算对应的小信噪比高斯白躁声的方差
    + x% j: M& ]( S+ An1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声7 d5 E- R; O4 {
    nsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通* {" X# _/ N- F1 T# k; Z+ e! \2 h+ _
    %                      %过信道传输)
    ' {! l7 E4 V* I) L- w3 l8 ^for i=1:length(t)-1                            %接受信号通过微分器处理+ F9 Q. b! r2 e( y8 |  N
        diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;1 u9 F- K( p' D) Z7 S  v2 j- z
    end
    4 g" J% O: X. {8 u$ Kdiff_nsfmn1 = abs(hilbert(diff_nsfm1));   %hilbert变换,求绝对值得到瞬时幅度(包络检波)
    / ]$ w! A2 z9 W; w" ezero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    - o0 Q4 x) d2 {# Adiff_nsfmn1=diff_nsfmn1-zero;
    5 i6 N; A' Q  @& _7 [5 E* h4 Rsubplot(3,1,2);
    + q6 e( w6 ~  \9 Zplot(1:length(diff_nsfm),diff_nsfm);      %绘制含小信噪比高斯白噪声已调信号的时域图' n2 m2 j# ?& R1 ^; s
    xlabel('时间t');2 R' ^' E7 @$ \% F6 H$ A2 r) S
    title('含小信噪比高斯白噪声已调信号的时域图');+ |; d# h* P; l4 L" s( M
    subplot(3,1,3);                        %绘制含小信噪比高斯白噪声解调信号的时域图
    . j* @) c( B4 Y- I: {# o. n7 n  t2 vplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');$ |4 P4 B% k7 S( S0 H
    xlabel('时间t');                          
    , L' l- ?5 Y2 N( r1 K0 stitle('含小信噪比高斯白噪声解调信号的时域图');! ]8 d6 j7 [" x- L! x& ?6 T+ B
    %*****************************************' p5 ?' U, v/ _" l7 M2 [
    disp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
    , E1 z) a2 q% k3 E% ~, p7 n) i) ?! gpause
    5 D/ E) k, \. E%**************figure(5)******************4 @4 W0 i; o9 I* ~8 u& J, E5 i  `
    figure(5)
    / g$ p+ p5 p* [" v( `5 t, Bsubplot(3,1,1);plot(t,mt);                                   %绘制调制信号的时域图
    5 {& F3 V# m3 S' C& h7 N/ Xxlabel('时间t');4 }& I: e0 t3 i" J( ~7 C
    title('调制信号的时域图');, G( S" b& t  d) f* \
    db1=am^2/(2*(10^(sn2/10)));                   %计算对应的大信噪比高斯白躁声的方差
    + M- T; i) f* L& p* y2 H1 Jn1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声
    # y+ w4 r/ j9 j- o  q! Onsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通过信道传输)+ Y5 d4 ]9 ]4 h! A! F
    for i=1:length(t)-1                             %接受信号通过微分器处理7 t5 k7 M- P9 M+ w
        diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;. e. S. A" y- w+ ^8 I
    end
    7 A0 D" b6 a% y3 gdiff_nsfmn1 = abs(hilbert(diff_nsfm1));            %hilbert变换,求绝对值得到瞬时幅度(包9 ^- `# w/ R2 |
    %                      %络检波)
    4 |: a1 Z- y! W8 }5 C3 G9 szero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    . i; h7 L) I8 r9 gdiff_nsfmn1=diff_nsfmn1-zero;% o1 d) ~- N0 r/ V1 }
    subplot(3,1,2);
    7 i5 _" o$ p* A3 f' w! a2 T# ?plot(1:length(diff_nsfm1),diff_nsfm1);             %绘制含大信噪比高斯白噪声已调信号4 T5 P: _, ?  A" _: ?7 v
    %                      %的时域图
    ' M. }! H6 V; b: X+ A- zxlabel('时间t');
    6 ^5 R8 j# v- L! n1 n4 y" ftitle('含大信噪比高斯白噪声已调信号的时域图');5 [9 C: L6 K3 ~& z& M, j1 n0 i
    subplot(3,1,3);                                %绘制含大信噪比高斯白噪声解调信号
    : n% ~. {1 C# S+ M( z2 X%                      %的时域图
    6 F6 j6 ]$ A, i6 d" m5 m( vplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');  M0 z0 o1 k* a
    xlabel('时间t');                           
    2 N1 y% m2 z  h# j8 a9 }4 Ktitle('含大信噪比高斯白噪声解调信号的时域图');* j$ [) O% q! u, T
    %*****************************************- ~, n# a  m8 S( D7 n
    %******************结 束*******************& i8 J9 a* A; H3 J

    $ b% I& a. w! f& ~6 t. r  j0 u- c
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    李秋锐        

    14

    主题

    14

    听众

    76

    积分

    升级  74.74%

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

    [LV.4]偶尔看看III

    社区QQ达人


      P. Q* L3 l! C/ F* q3 _/ l' g" H5 I8 t) o

    * h# M* r, C# h% g+ `。。。。。。。。。。。。。。。; ^0 s, b) A" g2 y

    7 {  s9 i. N& @% S1 g2 h9 z
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-6-14 16:00 , Processed in 0.440498 second(s), 59 queries .

    回顶部