QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2090|回复: 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调制解调系统.m9 ~. O4 A! Z0 ]* Z: O
    %频率调制与解调的Matlab演示源程序, D5 r) d' V( O
    %可以任意改原调制信号函数m(t)
    ( D9 q3 g% W) m& I3 d& R7 V%电子信息工程  杜怀超 091308305  
    4 O5 V4 t- q: f7 y/ I& x2 V/ a%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    2 U* a) X3 [: _2 X# W%*****************初始化******************
    4 t2 i9 L' G% t: j  _8 Secho   off       8 R" N) `4 U1 ]0 T9 C! G4 J) h+ i
    close  all# g7 \( O, j6 {; |
    clear  all
    1 a5 O* t/ c, l1 k" Bclc
    ' \0 S: ^4 L9 D9 P3 G%*****************************************2 ?" ^; S! s& o
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    ( ?3 N$ s9 C% P- a4 @6 a: @3 E%****************FM调制*******************( [. ^' y4 z4 N* ^2 y, f; P5 E
    dt=0.001;                                   %设定时间步长" ~$ e1 _" m2 @0 l+ Y
    t=0:dt:1.5;                                       %产生时间向量8 [. P, z( N& q. y$ Z/ z7 O
    am=5;                                      %设定调制信号幅度
    + v: q) H1 r( ofm=5;                                      %设定调制信号频率% f% i& G$ S- l3 \' }
    mt=am*cos(2*pi*fm*t);                        %生成调制信号
    ! t. O$ m' P, A# q4 C+ G, S( afc=50;                                      %设定载波频率
    1 z6 u  n$ [5 [, S  yct=cos(2*pi*fc*t);                             %生成载波' U4 i, p1 Z8 d: E& A
    kf=10;                                      %设定调频指数" L% m2 D* f3 f; c7 v1 U  c
    int_mt(1)=0;+ i0 o. Q% a6 ^; G
    for i=1:length(t)-1  
    ( a4 b' d& g/ P, Z    int_mt(i+1)=int_mt(i)+mt(i)*dt;               %求信号m(t)的积分' V2 O" J8 K1 R
    end                                          %调制,产生已调信号" \6 f+ h' j$ V( U2 B3 \( f  @
    sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt);            %调制信号7 Y3 X0 Q! z/ q! l. \: Y& \& t
    %*****************************************# i* o1 a& {+ T) I0 n/ Y! q' W
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    , T% }6 ]6 B9 m%*************添加高斯白噪声**************8 `& M" a% F% W
    sn1=10;                                     %设定信躁比(小信噪比)
    2 o, k, U- g: w/ _sn2=30;                                     %设定信躁比(大信噪比)
    ) z% m. R/ Z9 S3 f9 a8 @$ psn=0;                                       %设定信躁比(无信噪比)
    ) j% g2 B5 z$ H5 S$ Vdb=am^2/(2*(10^(sn/10)));                     %计算对应的高斯白躁声的方差  P$ e8 r( q2 L4 N
    n=sqrt(db)*randn(size(t));                      %生成高斯白躁声& O2 `: m9 g! ~6 l
    nsfm=n+sfm;                                %生成含高斯白躁声的已调信号(信号通$ S& o) D& I. C6 s) h  N
    %过信道传输)4 T/ P8 I: @5 ?6 q4 K; Z
    %*****************************************. ^8 S( g1 j' Q! m) j
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·  I: ~3 u: J5 y* y1 c
    %****************FM解调*******************0 f6 e  Q3 O: M- P: R
    for i=1:length(t)-1                             %接受信号通过微分器处理  {- A, O% k8 r1 G% L
        diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;2 ~4 V' Y& n) e( ]2 d5 C. c
    end
    + I4 Q/ F* h0 D. udiff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)/ ^2 q1 K, v3 k* h! i) p% m
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;- X0 r' B; c! ?
    diff_nsfmn1=diff_nsfmn-zero;
    : i- X* H- x1 d8 @" ?%*****************************************
    9 ?+ K/ {2 H# ?0 Z2 Z; \" G%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·* D7 X  B. i% w
    %**************时域到频域转换**************3 J6 @# s/ W- ~
    ts=0.001;                                    %抽样间隔
    , T8 M9 y. k* c( h7 {fs=1/ts;                                      %抽样频率; I( j! f6 z* A$ X. z. B
    df=0.25;                                     %所需的频率分辨率,用在求傅里叶变换
    : ?0 y: n( S) y" n%                      时,它表示FFT的最小频率间隔! P6 b6 t3 W$ G0 M
    %*****对调制信号m(t)求傅里叶变换*****
    ! D4 d0 }& J! Q! vm=am*cos(2*pi*fm*t);                         %原调信号
    ! k' v7 Q" ~9 J8 Lfs=1/ts;" ]. d1 ^( V/ u6 Q* |- \6 ^0 C5 d
    if nargin==2! d9 j7 n; C' }: ~+ O0 W
        n1=0;) y5 }3 J& v$ E0 ~* b% Z3 {! W
    else
    1 j1 u7 A: X' @# a2 w# T9 \! D    n1=fs/df;! n3 e- }0 j7 }. T5 U) O$ C* s$ q# s6 N
    end4 a9 E5 Z% E* `$ Z* d" {
    n2=length(m);: [( K4 @8 ~) b! O$ q" l; w. _0 B
    n=2^(max(nextpow2(n1),nextpow2(n2)));$ Z2 c6 F0 T* x1 r
    M=fft(m,n);
    ) B4 [% u8 }/ ?5 x0 Y0 L- \0 b4 }. l4 J. |m=[m,zeros(1,n-n2)];& B" F+ `& V* u) D, F  ?
    df1=fs/n;                                   %以上程序是对调制后的信号u求傅里变换* b- J- u! c4 u$ u# {% W
    M=M/fs;                                   %缩放,便于在频铺图上整体观察, }) m" {8 f* p' m6 c1 f# _
    f=[0:df1:df1*(length(m)-1)]-fs/2;                %时间向量对应的频率向量
    : f, q% @8 x' O$ q8 i& r9 O) d) a# n6 b) @8 C
    %************对已调信号u求傅里变换**********) S+ Z& Z) `# ~" B/ m
    fs=1/ts;8 t& f4 c2 l" e. b* z
    if nargin==2
    + b$ e; F* _7 T+ I1 V- k    n1=0;) X; b  d/ C4 p+ n* m5 m+ i7 j3 q
    else, x: k" |3 |4 y; A; M9 |
        n1=fs/df;
    6 [. A  y# p% [9 a2 ^end; N4 _( M" ]0 ^) N# i
    n2=length(sfm);8 [) g' Q- j# \" f7 W
    n=2^(max(nextpow2(n1),nextpow2(n2)));$ h% ^& I2 u6 x% ^
    U=fft(sfm,n);) \4 d% a1 C; u+ G! k* `
    u=[sfm,zeros(1,n-n2)];
    : l) d+ e( Z5 L' N+ s+ Y$ tdf1=fs/n;                                   %以上是对已调信号u求傅里变换2 Y  a' v4 r; X/ g7 b! Q- K
    U=U/fs;                                    %缩放
    0 M+ C$ V7 j: t0 i6 c1 N%******************************************
      f2 c0 L% L! j" g%*****************************************! d7 g' \/ `# }/ l: H
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    ( l( q( s3 f9 f' m2 y4 Z! F! @%***************显示程序******************; n# G& [* A6 I7 k9 w8 [
    disp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')# b, e: m) H; @2 e7 E( {# s
    pause) a- B% P5 Z9 |
    %**************figure(1)******************
    5 F4 Y3 K: O+ u1 u+ I: |figure(1)3 |/ b9 b; j: l" c
    subplot(3,1,1);plot(t,mt);                                 %绘制调制信号的时域图
    3 d1 b0 }$ h' i/ @xlabel('时间t');* K+ E  x6 U  w( k# ~' @
    title('调制信号的时域图');
      ?4 Q" N" m) _: n% e! Tsubplot(3,1,2);plot(t,ct);                               %绘制载波的时域图# |, R3 D! F4 @
    xlabel('时间t');- Q  s. A: h) t6 J
    title('载波的时域图');
    + a1 m6 M7 E) {0 H3 A7 f8 rsubplot(3,1,3);
    3 s7 T% w5 B( p( O  L  f- Y3 wplot(t,sfm);                                                  %绘制已调信号的时域图
    2 S; A$ I  _- l9 k; @xlabel('时间t');
    + `0 h% \+ G; Ntitle('已调信号的时域图');0 X6 G$ u  e3 r: A
    %******************************************/ v0 c: W+ F# B3 o
    disp('按任意键可以看到原调制信号和已调信号在频域内的图形')2 i( D2 \% ~  }' p
    pause) `4 `  H5 M5 @
    %************figure(2)*********************
    % Z# I$ k; J# R5 M, Bfigure(2)
    2 c* ~( ^' I8 ]5 c  z! y& fsubplot(2,1,1)
    2 k/ Y  ]: v0 ]  gplot(f,abs(fftshift(M)))                        %fftshift:将FFT中的DC分量移到频谱中心7 ]: [8 Z  c; S3 S8 D! n
    xlabel('频率f'). ?* Y7 w7 ^$ c& t4 z" Z
    title('原调制信号的频谱图')0 ^& B+ m" k* n$ t6 U
    subplot(2,1,2)
    3 X- k- h4 b0 wplot(f,abs(fftshift(U)))
    & W! ]% y5 k9 S2 R  zxlabel('频率f'), S5 @$ h" }0 i+ ]  L
    title('已调信号的频谱图')
    ) Q% q8 h; `5 y# K%******************************************
    , j  i3 g9 A4 b3 T0 }disp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')5 R. ]* m0 ^/ J- C3 m$ ~
    pause$ k9 d8 m, V6 o* Z& }
    %**************figure(3)******************
    ) z( B# _9 ?. y/ Z3 r" T0 `( ufigure(3)5 [3 H* |! N8 j" q# u
    subplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图$ `& ~% u4 _0 @6 q! L2 i- h& w
    xlabel('时间t');& d, D7 P" N- u7 ?6 _* _( `
    title('调制信号的时域图');1 x+ [6 P  r" V5 v0 a' k7 H
    subplot(3,1,2);plot(t,sfm);                              %绘制已调信号的时域图
    & d. F3 Y# N& u( C( u8 z+ M. \xlabel('时间t');
    . Y/ Z" m- G9 l& Wtitle('无噪声条件下已调信号的时域图');8 G. X3 g6 c* ^8 {4 Y3 J! N% t2 u
    nsfm=sfm;                              
    7 x& @! s8 z( o( a1 R6 F5 `for i=1:length(t)-1                           %接受信号通过微分器处理
    ; U' W' }; j$ k# i/ c/ p7 \7 S    diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;# L3 |* K0 f1 c6 Q
    end3 q* ~! J( W) F0 S  N& I# H( {
    diff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)  M3 z  @7 t* w7 I
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    ; Z) m: L% q* Y- ~' T8 [diff_nsfmn1=diff_nsfmn-zero;
    2 v5 K4 c8 j/ Y" p+ ysubplot(3,1,3);                             %绘制无噪声条件下解调信号的时域图
    4 Y! R7 `# \/ N( D! a& Kplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
    6 d' a3 v2 s' ^6 V2 {. w1 C  fxlabel('时间t');                          0 r# h. _5 V0 L/ O' y
    title('无噪声条件下解调信号的时域图');
    $ o# {. J8 b+ U%*****************************************, E5 A+ K# T% f3 U, t2 t
    disp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
    2 r( b5 }. T4 }9 X' r- Z% A& Lpause
      z6 S7 S4 B( ?! N' W2 y%**************figure(4)******************9 n  {6 d& J3 R5 k6 K
    figure(4)9 k0 y" s* b2 b2 ]3 Z2 N* f
    subplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图
    + t; n5 [' ]' `6 ]xlabel('时间t');# l9 F1 R0 j% a$ ?
    title('调制信号的时域图');+ V( U7 E2 k& @$ n
    db1=am^2/(2*(10^(sn1/10)));                   %计算对应的小信噪比高斯白躁声的方差& _" U, V/ [4 C4 d( D
    n1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声
    % E0 o& {( N2 q% _' |2 hnsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通
    " s9 g9 ^1 `! \# q4 @%                      %过信道传输)1 \( o: p, L; Z+ X9 F
    for i=1:length(t)-1                            %接受信号通过微分器处理
    0 k  W! n( o& J    diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;6 Z& T5 U* d& V  k" R* n8 E/ r
    end
    3 s4 E6 [. [" ]/ P4 Q% odiff_nsfmn1 = abs(hilbert(diff_nsfm1));   %hilbert变换,求绝对值得到瞬时幅度(包络检波)
    8 i: }/ @& j8 J; q% K7 b2 Qzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    $ B) L- |% L. @4 h% H- k. Q  y9 Ndiff_nsfmn1=diff_nsfmn1-zero;2 k( m/ \" y5 [; f9 ^/ s! n! C
    subplot(3,1,2);2 j- u% }. B2 k* g6 j3 |' H& r; }" H
    plot(1:length(diff_nsfm),diff_nsfm);      %绘制含小信噪比高斯白噪声已调信号的时域图" G& |6 e3 J( {/ m
    xlabel('时间t');
    6 f% x) H8 \. i3 E: J! Q2 F1 T/ Qtitle('含小信噪比高斯白噪声已调信号的时域图');2 ?+ F- Q' i4 V- F
    subplot(3,1,3);                        %绘制含小信噪比高斯白噪声解调信号的时域图4 h" W, K$ N5 J) Y! ~8 h$ i1 `
    plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');& ?/ ^2 v# a8 {- s
    xlabel('时间t');                          ) T  z8 P+ d$ h$ T
    title('含小信噪比高斯白噪声解调信号的时域图');$ q$ A2 i. \# Y7 R. t
    %*****************************************
    5 N, S- T7 K9 xdisp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
    9 @+ h% Z, p5 f( q% m7 ?' apause
    2 {4 l! o3 A0 s( H' p%**************figure(5)******************7 }" G& L2 @8 {' t, m( h
    figure(5)
    6 V- \- K! E9 e1 D- A9 o8 Csubplot(3,1,1);plot(t,mt);                                   %绘制调制信号的时域图
      f! {: l! v: o& a) }3 ^1 v  Zxlabel('时间t');
    % f% \" k. g! K) s6 x, X# [title('调制信号的时域图');  W, E( f# S- ~+ {0 Z- U: U5 e! K
    db1=am^2/(2*(10^(sn2/10)));                   %计算对应的大信噪比高斯白躁声的方差
    ) L1 Z' @9 R/ ?n1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声# k/ R( N) E* w0 f, P0 L
    nsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通过信道传输)+ j/ H) K  a) g/ r0 o. U
    for i=1:length(t)-1                             %接受信号通过微分器处理' i/ R* k. n7 \! o
        diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;- L2 ]' S6 g4 N  M& D' L
    end
    4 y" P$ D' J* x3 u0 F0 Cdiff_nsfmn1 = abs(hilbert(diff_nsfm1));            %hilbert变换,求绝对值得到瞬时幅度(包% ?$ h4 C( o( c8 n: T, h3 r$ ]
    %                      %络检波)
    $ k6 ]! o: S4 S. ~zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    : k4 Y7 W; i3 q' _+ Cdiff_nsfmn1=diff_nsfmn1-zero;
    & f4 O/ U1 b# hsubplot(3,1,2);$ @: E) |6 m7 i/ p7 @
    plot(1:length(diff_nsfm1),diff_nsfm1);             %绘制含大信噪比高斯白噪声已调信号
    , |2 y6 W! z( F* F) s, p" N! l%                      %的时域图
    8 E6 I( E" \7 [8 F* n8 hxlabel('时间t');; j: N, J" B3 q8 _3 q
    title('含大信噪比高斯白噪声已调信号的时域图');
    & Z  C6 M2 W- `- l5 O& K, B) jsubplot(3,1,3);                                %绘制含大信噪比高斯白噪声解调信号
    # n) ~8 W& O( q( ~! r%                      %的时域图  t+ A2 r; f3 B4 x- P  A
    plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');* M% z; ~8 s# z  T, F' R9 p! N
    xlabel('时间t');                           
    5 z+ d" |+ Y" }title('含大信噪比高斯白噪声解调信号的时域图');
    4 x4 L' A! U" ^4 v6 w%*****************************************
    * u% k. t3 f4 \. u: t8 p%******************结 束*******************5 L& F$ E# F5 N  \
    : G6 i$ o4 ^0 i- n6 \% J  L( O
    2 l0 I7 J2 P; S; z7 T( U. n' Z
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    李秋锐        

    14

    主题

    14

    听众

    76

    积分

    升级  74.74%

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

    [LV.4]偶尔看看III

    社区QQ达人


    " e' z1 f. q5 L2 i1 J4 w. D# J
    & _. i$ L9 x* D( h& g  X5 e
    8 X% A! t0 I3 N6 ^4 v。。。。。。。。。。。。。。。
    & _" T+ p8 _+ O  t% y; y# r  E6 `( j& y. H( `) {& T) p+ Y
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-4-11 00:44 , Processed in 0.283549 second(s), 59 queries .

    回顶部