QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2240|回复: 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
    " b0 C+ E/ {8 F%频率调制与解调的Matlab演示源程序
    9 C9 Y- w+ O6 w6 ?- c1 B%可以任意改原调制信号函数m(t)# P; S% G9 d, F! k0 S1 |8 N
    %电子信息工程  杜怀超 091308305  
    2 ^2 M- O* C% @, L- r%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·2 Q. u" e4 H- r
    %*****************初始化******************  z) |; }( j8 s: S2 ~$ u( S
    echo   off      
    7 ~. d0 |8 s! f& Y# d. q% ?close  all
    5 \5 D( J  j* q& X4 E- q$ {clear  all: |/ E7 C; A5 q+ X/ ^1 }
    clc
    1 l( m; K7 i& r5 t%*****************************************/ y9 }' }) C$ [# ^7 u% D2 O& _
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·6 N- n3 g7 D. Q0 V
    %****************FM调制*******************6 L- F2 K. e1 x* y
    dt=0.001;                                   %设定时间步长- i* S: [7 C/ U0 y
    t=0:dt:1.5;                                       %产生时间向量) k/ t9 @4 x0 x0 N8 Q. `
    am=5;                                      %设定调制信号幅度% c3 H# v1 L% T( @; N' ^
    fm=5;                                      %设定调制信号频率1 A2 T8 u1 G; n) r! V7 m0 Q
    mt=am*cos(2*pi*fm*t);                        %生成调制信号
    1 n! x+ @& \- ?, A5 \fc=50;                                      %设定载波频率
    ! M$ r" y8 G1 j; H' vct=cos(2*pi*fc*t);                             %生成载波% N' v3 C+ s3 @# v: n; s% P# Q
    kf=10;                                      %设定调频指数
    6 A; i4 z. c, S$ jint_mt(1)=0;
    # Z: i1 V* k4 X' yfor i=1:length(t)-1  7 R! M3 E/ E, ?, x# }. G
        int_mt(i+1)=int_mt(i)+mt(i)*dt;               %求信号m(t)的积分% i* ~6 R3 k. B( l, Z
    end                                          %调制,产生已调信号3 z/ ?' i2 u3 j
    sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt);            %调制信号" d' K5 x/ V0 n/ j# q* A
    %*****************************************
    1 m- Y) V- _% T, H/ b6 N%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    . U* Z9 N! I6 D/ c%*************添加高斯白噪声**************
    2 F, R- G) g9 O1 X8 ]% ]& ~sn1=10;                                     %设定信躁比(小信噪比)
    5 t9 j5 P: D: D: V7 msn2=30;                                     %设定信躁比(大信噪比)+ ]. P" h% B' O4 y
    sn=0;                                       %设定信躁比(无信噪比)
    # s( h5 B" k4 C$ Ddb=am^2/(2*(10^(sn/10)));                     %计算对应的高斯白躁声的方差
    6 @  F9 w. Z6 p6 B' in=sqrt(db)*randn(size(t));                      %生成高斯白躁声
    : O: t, u1 W4 @2 u+ O8 R( rnsfm=n+sfm;                                %生成含高斯白躁声的已调信号(信号通
    " S$ A: Y4 [0 Y' t# \. u%过信道传输)% J5 H# B3 Z3 `& w) U
    %*****************************************
    9 R2 ^4 E$ H) \% I0 q* J1 L1 t3 i6 p%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    4 @; X6 V1 I7 @) i%****************FM解调*******************& z) M9 o* O7 A6 ]
    for i=1:length(t)-1                             %接受信号通过微分器处理
    , W7 e  K8 G! a- t    diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;8 ^, n4 C4 ]3 y; V0 F  w* p
    end) Y; [2 @# Y; F5 j( B
    diff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)9 d. U% j$ u# L9 o4 t9 {% v1 v3 a
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    ' m2 A. \2 }( ?- j, ?diff_nsfmn1=diff_nsfmn-zero;5 j6 u# [1 k0 T) ?4 b
    %*****************************************' B: x  L8 P$ n0 X/ {1 |
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·: e  Q% |- Q8 }+ l6 k
    %**************时域到频域转换**************( V& ?3 h# [& `9 g; h
    ts=0.001;                                    %抽样间隔
    9 X+ K/ O6 S- E3 C' M* w$ tfs=1/ts;                                      %抽样频率, k$ E2 M' W0 G* C: d
    df=0.25;                                     %所需的频率分辨率,用在求傅里叶变换. D+ h/ G# n. \; ~
    %                      时,它表示FFT的最小频率间隔: r* n9 G9 o9 S2 A
    %*****对调制信号m(t)求傅里叶变换*****
    ' Q! Z8 s9 W3 d- w+ u$ G% hm=am*cos(2*pi*fm*t);                         %原调信号
    5 Y6 H' }9 y8 t5 I+ rfs=1/ts;7 x. B  {* z  i
    if nargin==26 J1 o- r* R% x/ f: u: T2 u$ x' \
        n1=0;' |* \1 z) c) c. y
    else; U6 M+ P5 R* m- A8 Z
        n1=fs/df;' m. q- l4 ~3 p5 }! Y, P
    end
    4 F. w0 g: @! h) J8 D& gn2=length(m);' S9 K/ ~* H2 `" B
    n=2^(max(nextpow2(n1),nextpow2(n2)));
    0 m( `4 a; N, k/ qM=fft(m,n);( R8 e% N# V% Z& r) Q/ z, J$ H: ~
    m=[m,zeros(1,n-n2)];
    ! m( O( p( z8 }2 R0 jdf1=fs/n;                                   %以上程序是对调制后的信号u求傅里变换
    9 r2 o' F/ ^1 u% \7 S) PM=M/fs;                                   %缩放,便于在频铺图上整体观察
    7 {/ ^# o+ A+ af=[0:df1:df1*(length(m)-1)]-fs/2;                %时间向量对应的频率向量
    9 }. ^9 C+ ]  y/ x1 r' X! u) g! R* i0 h4 {' F
    %************对已调信号u求傅里变换**********
    7 {* A8 x& A) _9 ^+ Nfs=1/ts;9 M! D6 q- ]$ Z& A* T% b2 j  ~  k
    if nargin==2# k! J" b! S& U" S& R; q9 w. t
        n1=0;
    / I) D& C! x2 f! U8 _else
    7 N2 a; x" q: a2 }) H( A    n1=fs/df;6 J! V* o+ V5 N( P: _
    end. u8 g' M& o% H2 Q
    n2=length(sfm);- l2 ?, f; d) m0 \
    n=2^(max(nextpow2(n1),nextpow2(n2)));
    ; D* r. c( M; W: d/ j: IU=fft(sfm,n);0 s6 V' e# ^9 X  u8 e
    u=[sfm,zeros(1,n-n2)];- g; u8 s  G' a" m5 ^6 x3 m
    df1=fs/n;                                   %以上是对已调信号u求傅里变换
    5 \. k1 _1 `1 YU=U/fs;                                    %缩放6 g- E! p# s6 |2 c5 {' q
    %******************************************
    - Y4 \2 |7 T" O# `1 e%*****************************************: }6 z. l( G. P5 a; q
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    * ~) d: ]( L. D) N9 d1 x/ C%***************显示程序******************2 {; u+ }4 h6 W) N  ?
    disp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')3 [2 h7 a, }8 f( Z- M
    pause
    4 N1 Y7 F/ F- Y9 {' H# b: r( c* @%**************figure(1)******************
    % H3 l* D* h) @. H, k, S/ Tfigure(1)
    0 B& }0 S) r7 Z; G1 c$ N% _/ Z% nsubplot(3,1,1);plot(t,mt);                                 %绘制调制信号的时域图
    # S: Z5 |% ]1 y; f6 p& ^( u5 s4 @xlabel('时间t');/ [5 v0 \9 J( V% ~; U2 c" a' W# @
    title('调制信号的时域图');
    + p" n, M- h) jsubplot(3,1,2);plot(t,ct);                               %绘制载波的时域图8 P2 x5 r, k- @+ y
    xlabel('时间t');0 D! `+ I  y+ T: J- y
    title('载波的时域图');2 y1 B( \! z* e, t
    subplot(3,1,3);
    % d" N3 A- E( K5 Qplot(t,sfm);                                                  %绘制已调信号的时域图
    ) E# ?3 ]4 B( t% l" A: @xlabel('时间t');
    3 r- N1 U' j) I9 `7 H3 Etitle('已调信号的时域图');
    $ ^: ?5 u3 w5 u/ u6 F0 e%******************************************+ P% h. z# ~' [1 }
    disp('按任意键可以看到原调制信号和已调信号在频域内的图形')2 R+ P# D4 C( D9 s, s
    pause# e' A1 G1 U, ]  T
    %************figure(2)*********************, Z7 _: U4 q; i6 e& y: z; ^2 ?
    figure(2)
    $ k7 i: o7 z' |% F1 Zsubplot(2,1,1)) s& r3 o9 E$ ^: X' f9 }( g
    plot(f,abs(fftshift(M)))                        %fftshift:将FFT中的DC分量移到频谱中心' k: e" g$ M! ?% |9 s. f
    xlabel('频率f')
      |' e& j+ q* J! w) T: n5 ctitle('原调制信号的频谱图')
    . L, F6 i& P. Z0 p* q0 @% Hsubplot(2,1,2): w( U8 b' W+ e1 v; k9 U. W) O  I
    plot(f,abs(fftshift(U)))
    8 f( k$ ^9 c; a1 K3 T0 ]. p9 Y3 B! exlabel('频率f')
    6 e& O- `/ G; g( [% i3 Dtitle('已调信号的频谱图')2 @, @5 }6 A& Q
    %******************************************( \* A0 q) w3 x7 o& _; r, B0 @: p6 e
    disp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')
    & q# t5 v4 q5 Y7 r. {/ _% [4 P4 mpause
    & m5 u2 p/ ^0 o4 a3 ?7 q%**************figure(3)******************/ d( J$ @- U7 w3 N4 L4 U
    figure(3)
    ; }+ j+ T: h5 `# `$ g9 ?: p( m* S# ~subplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图7 j% M7 a/ m8 G# u4 E2 l# e( j
    xlabel('时间t');
    ! v3 c7 ^! P9 q0 \title('调制信号的时域图');$ V( T6 w+ ]" e6 M3 {) `3 A3 K
    subplot(3,1,2);plot(t,sfm);                              %绘制已调信号的时域图
    2 J: }& I  O  B' d- u7 h) B8 @xlabel('时间t');
    2 c$ `' M  S! y2 R' W5 A  Ftitle('无噪声条件下已调信号的时域图');
    " C: l) e" z  U) H: n) Mnsfm=sfm;                              
    ( Z: C2 P! f" Rfor i=1:length(t)-1                           %接受信号通过微分器处理0 H$ Z5 B1 d! D  u* X  Q; v) L$ k. g
        diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
    3 n  h5 c5 F4 H  Y3 k# Aend
    # c9 U5 E6 E! l0 k  ^diff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)' i( s" N- R" J$ b
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    9 t1 o' ?1 b: Z0 z4 D+ A4 H6 jdiff_nsfmn1=diff_nsfmn-zero;
      \5 O& U& X+ a/ n3 f- l' ?7 F/ f% ?( vsubplot(3,1,3);                             %绘制无噪声条件下解调信号的时域图
    / M; l. |4 h% o* C( x4 Jplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
      h0 k- \" X0 Z, z: V6 |xlabel('时间t');                          9 e0 c: n) D" f# M! }( N
    title('无噪声条件下解调信号的时域图');4 F3 h0 z" l$ U( ?7 D
    %****************************************** W4 I, y6 X) B& C# N9 O+ w
    disp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
    5 u# ^7 B+ j% {5 Wpause
    5 ^! x2 A! ^. d%**************figure(4)******************; c) H' f9 S) |  a4 r, B( V
    figure(4)
    ' C& H6 R; R9 h  u8 v% @subplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图% B2 ?' Z  ~; K
    xlabel('时间t');
    1 {4 l' R" s3 Z, S! v& \* [title('调制信号的时域图');
    , Z) m- o6 Z- V; e7 X) j9 g+ D2 vdb1=am^2/(2*(10^(sn1/10)));                   %计算对应的小信噪比高斯白躁声的方差
    ) t( J( c) i, i0 |+ ?n1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声0 B" G( W5 G! ]
    nsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通; x; I# H& M2 b8 U. H* G
    %                      %过信道传输)
    ! z+ ?1 t& ]( efor i=1:length(t)-1                            %接受信号通过微分器处理8 |3 B1 V" D& ~1 ~/ E
        diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
    , Y& q# G* `- Y7 \8 X- |0 Q, Yend
    2 V+ i) x" X1 u" n; Ddiff_nsfmn1 = abs(hilbert(diff_nsfm1));   %hilbert变换,求绝对值得到瞬时幅度(包络检波)! o1 G' [+ e2 c, F5 Q/ L0 F
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;, g  Y3 ?# \0 F9 T" q% e
    diff_nsfmn1=diff_nsfmn1-zero;! M+ N. Z" ?- z
    subplot(3,1,2);
    : _8 _; h  u( U9 Q2 vplot(1:length(diff_nsfm),diff_nsfm);      %绘制含小信噪比高斯白噪声已调信号的时域图5 o: l. r/ |: B' j
    xlabel('时间t');* z2 f9 v9 m' d! T! i* Q0 m
    title('含小信噪比高斯白噪声已调信号的时域图');
    3 V. m( k; m! d- ]3 Fsubplot(3,1,3);                        %绘制含小信噪比高斯白噪声解调信号的时域图$ Z4 `- f0 G' Q4 J$ V' {
    plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
    # i1 ^5 s7 f% i5 ?xlabel('时间t');                          
    * P1 W  A, X% Z/ M+ O7 }/ Atitle('含小信噪比高斯白噪声解调信号的时域图');
    0 Z; V4 k" `' B9 y$ H4 \6 Z' \%*****************************************
    + T! [9 q+ T& d" K4 M# e0 ndisp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')0 X- E7 v: _9 W; n; [& _" U
    pause9 J( R" q, `: ]4 m( K
    %**************figure(5)******************- T2 N2 I. V% P
    figure(5)
    8 K* i# M- T5 F, t" Esubplot(3,1,1);plot(t,mt);                                   %绘制调制信号的时域图
    ) X, `( o# |3 z! T* bxlabel('时间t');
    9 i" H3 a) ~" g8 ^$ I5 b4 f  {title('调制信号的时域图');
    6 h& V9 t$ E4 U2 W, F* ?, q* e4 Pdb1=am^2/(2*(10^(sn2/10)));                   %计算对应的大信噪比高斯白躁声的方差
    * y2 W& Z/ |- O$ @n1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声
    1 {4 R1 q' {# O9 Q: B7 l/ m! Ensfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通过信道传输)+ A( |8 q3 S9 y3 w: a' ^! U
    for i=1:length(t)-1                             %接受信号通过微分器处理6 b" A+ k: q& b6 B, q
        diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
    * z# h8 x+ l, r' t% C4 Uend- L; I" \) @& v* X' Z* d7 d
    diff_nsfmn1 = abs(hilbert(diff_nsfm1));            %hilbert变换,求绝对值得到瞬时幅度(包6 Z* Y) l0 r: r8 Z3 w
    %                      %络检波)3 c) V6 Y5 l/ c* e
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    , k- Q" {# {. L$ Bdiff_nsfmn1=diff_nsfmn1-zero;$ N. z4 |5 x  F$ e+ ]7 c
    subplot(3,1,2);
    / }& V: w5 x1 s3 Y* a. K; Dplot(1:length(diff_nsfm1),diff_nsfm1);             %绘制含大信噪比高斯白噪声已调信号
    ( _/ a9 L, W8 d3 k3 O" ^%                      %的时域图
    + ~$ ]: I& h6 _6 |0 Exlabel('时间t');
      l3 |7 }* n8 x0 @/ @" \title('含大信噪比高斯白噪声已调信号的时域图');% j: p& v* M  _) C
    subplot(3,1,3);                                %绘制含大信噪比高斯白噪声解调信号
    / Z1 ?1 l7 L4 y, J+ E0 _%                      %的时域图2 I8 Y$ C6 T. R$ }! E( r' U
    plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');- R. B% G! B3 ?1 y  a# t2 @
    xlabel('时间t');                            * _7 u# a0 R- J; o2 _
    title('含大信噪比高斯白噪声解调信号的时域图');
    $ y1 ?# c5 R/ x2 ~; I/ T%*****************************************
    6 R6 i5 j: K( q' w$ |0 [1 X%******************结 束*******************
    2 G0 V! U! c# Y, K# y, p% `; i) J, Y. h

    1 ^+ D: v: Y2 m; Y; @( t
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    李秋锐        

    14

    主题

    14

    听众

    76

    积分

    升级  74.74%

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

    [LV.4]偶尔看看III

    社区QQ达人

    2 b5 ^2 H- w+ \- [* P, g
    + g% a0 i$ @. F* ~5 W  k
    ( G0 x# u: [9 h1 c/ w9 ~
    。。。。。。。。。。。。。。。
    ( h$ U& L0 x) h4 o" N6 D/ m
    7 N8 m$ }: \( Q$ ?" l$ e
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-10-9 04:01 , Processed in 0.432830 second(s), 61 queries .

    回顶部