QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2135|回复: 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
    5 j# X% t- ~% ?) v%频率调制与解调的Matlab演示源程序0 k, {8 p9 D7 T6 t3 @4 w
    %可以任意改原调制信号函数m(t)
    6 E) |7 ^$ ~' D% Y$ @. R%电子信息工程  杜怀超 091308305  
    * ^% ?! @  X' \/ _( C" o%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·* Y$ }0 u% r7 k0 f% M$ N' V
    %*****************初始化******************' j7 ~' J9 u, z3 S/ ^1 r
    echo   off       3 S0 o6 _6 Q4 O9 V8 B6 [
    close  all
    3 v+ Y5 T9 K/ ~' B# z3 u4 M9 eclear  all
    ! q7 \: M. r1 o( V- W; `clc7 m" c7 r& w% x8 K) k; d
    %*****************************************
    4 H) \) n. E# k1 x9 H- G%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·0 j1 p: g/ b2 s0 q3 K4 l# O* I( b! v7 }
    %****************FM调制*******************) }) i. {) h3 l" q, t: g
    dt=0.001;                                   %设定时间步长+ @+ P7 p# `# l
    t=0:dt:1.5;                                       %产生时间向量7 H7 m) F4 o3 Q- g
    am=5;                                      %设定调制信号幅度3 s: H2 Q% K9 B3 ]# e  y
    fm=5;                                      %设定调制信号频率
    1 D. q6 d( u0 a, t; V, \* T3 dmt=am*cos(2*pi*fm*t);                        %生成调制信号: @- r3 Z% J! Z( e
    fc=50;                                      %设定载波频率
    6 q; p+ Q: G" b5 ~7 r3 i1 |5 E4 pct=cos(2*pi*fc*t);                             %生成载波
    . ?9 s& U9 u, J* i7 g4 `; @kf=10;                                      %设定调频指数
    , E; d$ D  `: H: S' l8 ~' Uint_mt(1)=0;5 {! t! R. }7 i$ K4 O! s% }. w6 B
    for i=1:length(t)-1  # N; X6 R: ]! U4 r. L1 D0 G
        int_mt(i+1)=int_mt(i)+mt(i)*dt;               %求信号m(t)的积分! P) ?5 z' x% W  `! W5 v
    end                                          %调制,产生已调信号
    5 ~* u& E# |" _. Nsfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt);            %调制信号7 D$ o0 E8 C7 x2 S4 h
    %*****************************************3 _2 n# u8 |! G( p4 e+ x% d! @* Y' f
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·4 v' F2 D6 ?( u6 |, t' A+ c
    %*************添加高斯白噪声**************
    7 e% ?3 Q% r* W8 F' v$ I& Rsn1=10;                                     %设定信躁比(小信噪比)
    $ m- }1 i# e4 q. p$ \sn2=30;                                     %设定信躁比(大信噪比)2 |2 P; G7 x' F) n9 P! T; U( m
    sn=0;                                       %设定信躁比(无信噪比)- P3 C+ c( D8 C
    db=am^2/(2*(10^(sn/10)));                     %计算对应的高斯白躁声的方差
    2 d6 `/ Q7 J* U9 w7 f$ \n=sqrt(db)*randn(size(t));                      %生成高斯白躁声" B+ s4 B0 M* \( y
    nsfm=n+sfm;                                %生成含高斯白躁声的已调信号(信号通4 V+ A3 H/ p9 t! t+ `
    %过信道传输)2 O3 s$ m4 `  M% S6 K  ^* q
    %*****************************************
    * d5 D8 K! K) p% Q2 `%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·5 O. }9 N+ F. z( {  a- K
    %****************FM解调******************** g- E  v/ m, b# ^
    for i=1:length(t)-1                             %接受信号通过微分器处理4 W- @$ z8 P7 R5 e
        diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
    , @8 W- o$ d4 ^8 l$ J! K0 `+ K4 fend
    $ N0 r% Q' F  h9 H  u' d, Ediff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)
    # \5 |) V0 {1 U" ezero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    & T5 X6 o% d7 w1 L+ Fdiff_nsfmn1=diff_nsfmn-zero;
    ; b: l7 F+ N7 Y4 j%*****************************************9 X# L: F5 i( E: H5 h1 D
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    ; {9 D/ M8 a+ W+ @' r: _2 Y%**************时域到频域转换**************; M: X" |6 H' r: o% r" z- R# m
    ts=0.001;                                    %抽样间隔
    # ~' q6 j+ q& B* z; F6 }- {fs=1/ts;                                      %抽样频率
    + ^  x" `% a5 P$ cdf=0.25;                                     %所需的频率分辨率,用在求傅里叶变换
    2 T4 J! ~( L; e0 x9 C& Q%                      时,它表示FFT的最小频率间隔
    9 S% I" {5 j) t3 `: f%*****对调制信号m(t)求傅里叶变换*****$ R; C5 [1 ^: z0 w  u
    m=am*cos(2*pi*fm*t);                         %原调信号
    ; Q. [5 N# B/ R2 w# u+ c* c, `fs=1/ts;% b( ?; r% p  Z! H. t: ]* \3 @
    if nargin==2) m* F; u" E8 T2 A2 G- [$ [
        n1=0;
    ! ~  D+ S$ X/ B0 gelse
    * T( z3 I8 W. E6 c! O    n1=fs/df;  y9 x9 t+ ~" X. A* C' v8 ^3 K4 L
    end  F4 V7 ~% {7 b! ?
    n2=length(m);
    3 U/ A& x9 {( r3 X9 P8 in=2^(max(nextpow2(n1),nextpow2(n2)));& M  p/ `5 q# v0 [( G3 |
    M=fft(m,n);' e: z* e* o/ h7 o+ @! T
    m=[m,zeros(1,n-n2)];
    . p4 n* F% y5 T. Wdf1=fs/n;                                   %以上程序是对调制后的信号u求傅里变换1 H- q9 s+ U/ _7 h( T
    M=M/fs;                                   %缩放,便于在频铺图上整体观察% G! N5 ^5 h# {! C6 I
    f=[0:df1:df1*(length(m)-1)]-fs/2;                %时间向量对应的频率向量
    . R- x+ z4 R3 O+ @: A1 e
    0 M; ]0 y6 V# q$ x) z%************对已调信号u求傅里变换**********
    3 k7 o; v( w' efs=1/ts;
    - m! l# I; G6 H# ]  Bif nargin==2
    9 ]  S1 N/ b( u' W- Z# A    n1=0;
    1 c# @) B, _: z/ ?/ Helse4 E/ v1 d2 C, r/ \' y2 w/ g
        n1=fs/df;
    " U& u$ X. ?. T; b7 xend7 f, f# F) S( Q5 {3 o) j
    n2=length(sfm);
    . [" \0 @$ h$ z/ pn=2^(max(nextpow2(n1),nextpow2(n2)));
    + u3 `: a5 G3 ?U=fft(sfm,n);1 J* g+ t* i4 ^0 ], ~  T- o
    u=[sfm,zeros(1,n-n2)];/ Q( ^, t9 h* B2 V/ R4 q7 r# A7 h
    df1=fs/n;                                   %以上是对已调信号u求傅里变换
    3 z: Z- A: Z# B7 OU=U/fs;                                    %缩放9 w; l) b" ~- {# o+ y: F( q
    %******************************************2 E1 e5 U# i3 w0 o. ~
    %*****************************************
    ' C2 S% Q+ r6 @) K2 D( z%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·# f1 T; W# G" `) x% M
    %***************显示程序******************, j7 b" d: `2 X4 D) E
    disp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')/ ?: `7 \' k) d9 R8 Y9 `, v2 T
    pause
    . m! T" o0 r" O) ?%**************figure(1)******************8 H& o- N, ^* }
    figure(1)0 c" Z8 ^1 U/ z, y( q, P' ?
    subplot(3,1,1);plot(t,mt);                                 %绘制调制信号的时域图: E9 @8 G8 b6 }1 j( C6 g
    xlabel('时间t');, t1 U5 I- a; ]
    title('调制信号的时域图');2 X1 C% _6 d, p- S& R  `" [) |* ~
    subplot(3,1,2);plot(t,ct);                               %绘制载波的时域图+ z$ d5 g) [6 r
    xlabel('时间t');$ _. S% a3 ^2 U' O: T7 a0 M0 c
    title('载波的时域图');6 y" S% V6 I8 O- j- x( _. R
    subplot(3,1,3);' x0 \! f) [% q' y" G8 \, `. t
    plot(t,sfm);                                                  %绘制已调信号的时域图
    + g+ R7 Q( b/ E" axlabel('时间t');  W; E3 t$ w7 |2 Q. G5 s
    title('已调信号的时域图');, Z, N+ S$ ^: M
    %******************************************
    1 v5 U6 }, S& j$ x; D( Ddisp('按任意键可以看到原调制信号和已调信号在频域内的图形')
    7 ?& C" b3 }9 u; x' H( [pause0 Y) A+ U( u" J7 ]
    %************figure(2)*********************
    * Y, ?  _, W' |! Y% Y: M) y" Rfigure(2)# P+ E, S! Y- j; A5 v  z
    subplot(2,1,1)
    - R  b' e* Y* _' F1 Y, b2 Fplot(f,abs(fftshift(M)))                        %fftshift:将FFT中的DC分量移到频谱中心
    5 u! \( K* m3 `3 P- qxlabel('频率f')
    5 X) C3 u/ s7 i4 R* Ptitle('原调制信号的频谱图')
    0 U" |, _% r3 C+ wsubplot(2,1,2)
    6 R1 r4 a8 ]6 G) i7 q/ Jplot(f,abs(fftshift(U)))
    6 ?% r; w! m" Ixlabel('频率f')
    ' T3 ~9 ?, i3 e& Y' utitle('已调信号的频谱图')% f$ `5 ]7 F, A: v, ^
    %******************************************
    + t5 m( h, K8 |# {disp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')$ V8 ^0 W# N  k) V
    pause0 d) Y* T9 U% `9 f9 i
    %**************figure(3)******************
    9 j. I/ ^% a, A* b! mfigure(3)
    1 ~2 a: F7 m5 n; R0 i8 J$ g3 o7 h2 Ksubplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图
    ( t5 X+ {+ B1 _9 |+ Fxlabel('时间t');
    " e1 M; h0 H' i2 Z( G' ytitle('调制信号的时域图');
    / K7 \# L# D, O" _  X; e6 |3 n& esubplot(3,1,2);plot(t,sfm);                              %绘制已调信号的时域图
    % v* q8 k' J4 i* E6 oxlabel('时间t');
    + |) u* n' L4 c8 @* ^* dtitle('无噪声条件下已调信号的时域图');: A# a; e0 N9 M9 [. i/ d
    nsfm=sfm;                              7 _, d0 A9 b3 U! J7 k5 A
    for i=1:length(t)-1                           %接受信号通过微分器处理
    3 g* }$ f6 n; [0 X    diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
    9 C6 A8 d. y6 v7 R1 M% gend
    % D6 V; z7 s) Z5 J8 {+ ~$ D3 V( _diff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)
    0 V& U6 p1 l8 o5 @* i! gzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;1 N+ A; ~% h! r3 M' a
    diff_nsfmn1=diff_nsfmn-zero;6 N6 Z& R* m% W  `' R5 x
    subplot(3,1,3);                             %绘制无噪声条件下解调信号的时域图) h; u, X- F) O$ x' G
    plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');! @7 S. d* ~% s; z8 t4 X1 |$ B4 R
    xlabel('时间t');                          
    ( H; t5 k( O4 i0 `( H6 @9 Ititle('无噪声条件下解调信号的时域图');
    ; X  Y$ V6 a/ N  Z" t9 P+ s2 m%*****************************************
    ; y& g  l# N5 V. Zdisp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')) w' `. }0 @. _- L5 x- q
    pause/ l/ v* }$ w& P3 \" M- `
    %**************figure(4)******************$ ~4 @# r8 [% Z& G( \+ _: ?
    figure(4)
    ) Q6 f6 v4 F6 D; e$ ~4 Csubplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图1 k9 m2 L7 B5 D1 B
    xlabel('时间t');4 o% h7 h; r! K2 o
    title('调制信号的时域图');- G' k9 W) `" H$ o
    db1=am^2/(2*(10^(sn1/10)));                   %计算对应的小信噪比高斯白躁声的方差; w; O+ e# R  [( ~/ m
    n1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声8 J. f2 }3 g- a$ b
    nsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通7 P5 B6 j' y/ }$ |) z1 `
    %                      %过信道传输)" e# n. E1 ^( O2 K* _; A
    for i=1:length(t)-1                            %接受信号通过微分器处理3 X; p( f, ]& X1 R
        diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
    1 f& F. S) H1 U# Y$ |end/ I- G8 u# [4 ?1 [+ S
    diff_nsfmn1 = abs(hilbert(diff_nsfm1));   %hilbert变换,求绝对值得到瞬时幅度(包络检波), m4 a( U; r( n' Y* h& o
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;9 {7 R8 Q9 Q) q9 L3 f/ Y& a' e/ Q
    diff_nsfmn1=diff_nsfmn1-zero;2 |* W& q0 n6 b: s. e/ l. U
    subplot(3,1,2);
    2 U) V3 J: y, D& x' Eplot(1:length(diff_nsfm),diff_nsfm);      %绘制含小信噪比高斯白噪声已调信号的时域图) n5 T. \6 V( y! b; }- N9 F) r
    xlabel('时间t');5 P; m* G, v) F8 Q7 |, t. h1 s
    title('含小信噪比高斯白噪声已调信号的时域图');
    0 S& ]) n% x; B) Q# W  V( T' msubplot(3,1,3);                        %绘制含小信噪比高斯白噪声解调信号的时域图
    / R8 i$ H5 d! A% jplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
    / p) O% ^1 s) xxlabel('时间t');                          + Y, p2 y/ O0 {
    title('含小信噪比高斯白噪声解调信号的时域图');! m1 @0 `& R9 H+ |1 C
    %*****************************************
    0 ?! R" t# ]! B$ X/ C# r# K; ]disp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')$ c: }% f- L  W; r# q1 Y
    pause
    # |/ N% A' Z- ?0 L%**************figure(5)******************* j: d7 N; V' F( M3 G. a6 E
    figure(5). p8 \5 ^+ y9 f+ p6 o
    subplot(3,1,1);plot(t,mt);                                   %绘制调制信号的时域图+ @  l: w4 ~. h- C
    xlabel('时间t');3 Z6 b, I6 r) `; B( s2 b
    title('调制信号的时域图');( `/ _7 F' w1 _1 _# j
    db1=am^2/(2*(10^(sn2/10)));                   %计算对应的大信噪比高斯白躁声的方差
    1 R9 m5 K/ a5 hn1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声4 K, i4 \) r  E+ s4 }1 G# ?" ?
    nsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通过信道传输)3 J- P  F: n. n6 ?; C
    for i=1:length(t)-1                             %接受信号通过微分器处理
    ' i" r8 F: D/ x# L9 d+ k$ E    diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
    - D, J. u+ E/ d1 N9 S# D: kend, v; l6 V! W# ]) h$ Y$ s$ I
    diff_nsfmn1 = abs(hilbert(diff_nsfm1));            %hilbert变换,求绝对值得到瞬时幅度(包
    1 V1 A0 j  x5 o3 J& R  M! ]%                      %络检波). q0 W  g, B3 [- W, o# v
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;4 j8 A% z0 q! z2 ~
    diff_nsfmn1=diff_nsfmn1-zero;
    4 v# e4 v. L: s" h( S; _( Tsubplot(3,1,2);3 Q" A3 j  z" V" X8 B
    plot(1:length(diff_nsfm1),diff_nsfm1);             %绘制含大信噪比高斯白噪声已调信号$ E( }" F1 c' @% S$ n2 N& w! U
    %                      %的时域图. a/ M0 M* x; L8 d# C( b
    xlabel('时间t');
    " _, u  y7 E; Wtitle('含大信噪比高斯白噪声已调信号的时域图');
    - P# f6 R4 A* P/ v) ksubplot(3,1,3);                                %绘制含大信噪比高斯白噪声解调信号
      w1 |' D) I+ n% v( T3 C%                      %的时域图
    " g  i/ J. B* cplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');  _9 ~$ t1 A, U
    xlabel('时间t');                            + [" ]3 p5 O" E6 R! ~  v7 H
    title('含大信噪比高斯白噪声解调信号的时域图');
    ! K9 a* D2 h- i%*****************************************
    5 z/ H% s/ b( M3 w. Z( l  y( d%******************结 束*******************( z7 n; i; a+ p
    7 x  t2 F, O" Q: C: w# z

    ) F7 }( O" n5 @' E* b0 Q* }1 I2 k
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    李秋锐        

    14

    主题

    14

    听众

    76

    积分

    升级  74.74%

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

    [LV.4]偶尔看看III

    社区QQ达人


    ' i; Z/ a8 R( p8 C7 ?% Q. d6 p) G$ t

    " i/ H4 H# k8 q% f/ O0 u  g。。。。。。。。。。。。。。。% U0 s0 |. \$ k

    - F: `, A8 h4 S) L+ a- t
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-6-15 05:15 , Processed in 0.778568 second(s), 57 queries .

    回顶部