QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2128|回复: 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
    / G3 b% A- b* a; T7 P# c! h6 s%频率调制与解调的Matlab演示源程序
    & c# j% i; c) q/ @%可以任意改原调制信号函数m(t)
    4 s" ]' [  _7 g6 ~+ S%电子信息工程  杜怀超 091308305  
    0 M8 b3 d& q, |0 `  r8 z) J4 y%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    , r1 e5 m6 o* l7 L# s$ o%*****************初始化******************
    ( ?* |. \, Z1 Fecho   off      
    % w2 p$ ?5 s* }close  all
    0 F2 w1 Q' @$ F5 I# W8 @clear  all
    5 {6 l' |/ R* ?* `clc1 G5 [* W0 ]6 J+ p
    %*****************************************- n2 {$ ^' H- J
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·3 G0 h& T" d- B7 _
    %****************FM调制*******************- `; S$ V: K" G4 h6 ]
    dt=0.001;                                   %设定时间步长& |) H/ o. H1 j4 K
    t=0:dt:1.5;                                       %产生时间向量
    9 U. X& C9 h; h4 Z7 M7 Qam=5;                                      %设定调制信号幅度
    8 j6 M8 x% k" o* u3 {/ Tfm=5;                                      %设定调制信号频率
    5 \# L% V0 `; Z- ~2 Ymt=am*cos(2*pi*fm*t);                        %生成调制信号
    1 e$ a* }# k* s8 j7 T2 [( Sfc=50;                                      %设定载波频率
    ' J  V7 \$ ~  V! G6 d1 U3 }ct=cos(2*pi*fc*t);                             %生成载波) L- w5 G3 L) F; D( e8 B" V# }
    kf=10;                                      %设定调频指数5 s5 q$ O) `; J! }( k8 X
    int_mt(1)=0;: n- W/ Y8 D3 Z4 G! ^7 a, f% l
    for i=1:length(t)-1    b. T( E# S3 a8 {$ M+ u
        int_mt(i+1)=int_mt(i)+mt(i)*dt;               %求信号m(t)的积分4 R, N5 J) x6 r; n$ |- k0 g. Z
    end                                          %调制,产生已调信号$ k- G. S. t- y. [$ r
    sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt);            %调制信号
    7 d5 ^- I2 O7 F4 w6 N! V%*****************************************
    & ?3 H9 k* a: D( j$ u4 l' @%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·8 A: j( ?) b5 H5 {2 Y. i
    %*************添加高斯白噪声**************2 `! N0 b1 p# U8 \6 i5 T* p
    sn1=10;                                     %设定信躁比(小信噪比); y0 w8 [9 u; z' M$ q3 {5 x* q
    sn2=30;                                     %设定信躁比(大信噪比)
    5 r0 d9 z$ K6 ~% w% d- \, O% @sn=0;                                       %设定信躁比(无信噪比)
    % r( q' h5 p; O2 u9 i2 P, Qdb=am^2/(2*(10^(sn/10)));                     %计算对应的高斯白躁声的方差1 t: @" W, Y# K3 g+ h+ ?% w4 K9 R; e
    n=sqrt(db)*randn(size(t));                      %生成高斯白躁声  h3 _! d7 z4 j% Z8 T3 B+ N! H0 M
    nsfm=n+sfm;                                %生成含高斯白躁声的已调信号(信号通
    , V  s) G3 u0 o/ H4 m; x%过信道传输)* a5 x! V$ V& G: E4 \
    %*****************************************
    ; n6 D, V" f2 U: d# F5 q%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    ! ^( S0 n' Y/ D. X%****************FM解调*******************  z% J0 T0 N3 O0 f- d
    for i=1:length(t)-1                             %接受信号通过微分器处理' m" R! ~7 C/ a& ?, w
        diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;" f( ]4 `6 e6 K2 k  e
    end% D/ R, L; z8 F& A$ G$ \2 ~% t
    diff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)
    $ F# ~' @, t; X+ _+ xzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    6 d5 I( n/ I2 N( Q) z% X( m) \4 ndiff_nsfmn1=diff_nsfmn-zero;
    : F1 w9 }, Q% x5 c  n%*****************************************
    4 b0 Y2 D  x  p! ^%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·1 [% U( X0 o2 o7 h3 {9 d
    %**************时域到频域转换**************/ o7 s4 H0 L# i* `
    ts=0.001;                                    %抽样间隔9 X* w, W9 T' B* R5 L
    fs=1/ts;                                      %抽样频率
      r; k) @  i& y1 g7 k. a/ Xdf=0.25;                                     %所需的频率分辨率,用在求傅里叶变换% ]( h5 j6 m+ H2 ]0 P; o
    %                      时,它表示FFT的最小频率间隔7 @; L' c! I7 c: O. Z
    %*****对调制信号m(t)求傅里叶变换*****  I( o* o3 m7 p5 _
    m=am*cos(2*pi*fm*t);                         %原调信号7 W9 t/ j' v6 v: j9 d* v; L0 ^; b1 D
    fs=1/ts;) j% b& Z) }" T2 }- B
    if nargin==21 g8 e9 F; Z$ ]5 L% _# O
        n1=0;
    $ x+ A6 z2 \( P3 \3 Q1 U% e  telse
    9 D6 ^7 P7 y) j; ~    n1=fs/df;
    # u% l5 Y% h, D. jend
    # r% n8 u! S" }6 |n2=length(m);) X! \' O7 u1 L: O
    n=2^(max(nextpow2(n1),nextpow2(n2)));
    0 _8 q, ^1 u& d7 f7 g* @& \M=fft(m,n);
    9 X) ?2 d9 \3 i" b+ F" km=[m,zeros(1,n-n2)];9 d# e; ~5 y' E- v6 e
    df1=fs/n;                                   %以上程序是对调制后的信号u求傅里变换
    * T; |" X% K2 C! rM=M/fs;                                   %缩放,便于在频铺图上整体观察- X/ L1 r/ Q! R3 @9 n7 @
    f=[0:df1:df1*(length(m)-1)]-fs/2;                %时间向量对应的频率向量
    $ z! n3 `& M& h: {, u0 H
    , L% N; a7 J) e; r%************对已调信号u求傅里变换**********6 E: f/ ]9 G1 ]( N, }- o
    fs=1/ts;6 M% s7 Z2 u6 Q2 q5 c, m) M" [
    if nargin==25 L/ t, K9 \: Q+ H9 S( D
        n1=0;
    1 U; ]7 C/ a  q" W, [else
    " a; d4 D& N* s- V: s  m    n1=fs/df;
    9 g5 a4 E1 _) R: v. }- yend
    & B* a) q/ z, Y1 C- L; sn2=length(sfm);
    ' p& y! i' M* k- L) ~' i/ Un=2^(max(nextpow2(n1),nextpow2(n2)));9 U' \7 q7 M$ P; X; |$ G/ F/ w( s
    U=fft(sfm,n);
    & G, e: {4 |& u3 C* @u=[sfm,zeros(1,n-n2)];- x% z/ y2 j2 X! @/ m7 C8 c
    df1=fs/n;                                   %以上是对已调信号u求傅里变换
    # v+ F% [7 e& U4 ZU=U/fs;                                    %缩放
    + r* u" ^, H- u/ m  C6 F' z: Y%******************************************; H( _+ f) n  K! ]# U8 e# |7 ^
    %*****************************************5 E: {' u# T, ~: b
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·" g5 ?0 O& r% F7 O
    %***************显示程序******************; r8 F' E- L( w* I
    disp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')0 U9 s( \; |2 f' J
    pause
    ; {! M0 g. Y  ~%**************figure(1)******************+ h5 z: I/ u+ a' I" N
    figure(1). Y; X* M) G. F- O
    subplot(3,1,1);plot(t,mt);                                 %绘制调制信号的时域图
    - d$ N: o2 T& ]/ L0 Uxlabel('时间t');" G5 Q, c* N) f5 g
    title('调制信号的时域图');
    3 W- P8 s- {- w7 Nsubplot(3,1,2);plot(t,ct);                               %绘制载波的时域图
    & F6 n" }' g7 G, J2 kxlabel('时间t');
    4 U4 _' h3 {% \" V2 [  V& P, j- H# Ltitle('载波的时域图');1 c& `; A2 Q7 [7 d. E1 M0 |* F9 e
    subplot(3,1,3);0 ], \4 E/ ]# }/ B& O! @6 R
    plot(t,sfm);                                                  %绘制已调信号的时域图- a7 _% l; t# t0 T
    xlabel('时间t');! Q' l) I2 q+ [1 |( S
    title('已调信号的时域图');
    3 r2 ]& W& e1 ^8 i1 H# x%******************************************$ [2 f( s0 U7 h8 Q$ C( I( U
    disp('按任意键可以看到原调制信号和已调信号在频域内的图形')3 S5 ~+ r# H& F6 n3 \4 |
    pause
    2 ?6 L6 {" G8 ~' c%************figure(2)*********************
    4 Y" o8 \: B+ j; Ufigure(2)
    " K7 X' [. d- L4 C0 x8 Vsubplot(2,1,1)
    4 c1 a9 H! T  s  P9 \' jplot(f,abs(fftshift(M)))                        %fftshift:将FFT中的DC分量移到频谱中心
    ) f4 e8 y4 L1 `, W, @2 f  @* Dxlabel('频率f')
    0 B* N" b, h$ Q# k2 g2 o- U! ytitle('原调制信号的频谱图')/ b2 [; I! p7 Q! v9 y% u5 v
    subplot(2,1,2)
    ; N3 o) [3 A% {. nplot(f,abs(fftshift(U)))2 L- w7 T/ _1 Z7 O% t5 v$ t
    xlabel('频率f')
      ~& M6 Q# ?8 P+ A9 ?' F% p$ j- Etitle('已调信号的频谱图')
    " o4 L. i" }2 @+ ~%******************************************
    3 `, t4 d$ J* V- ?; h' O& ^  Hdisp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')5 ^$ \% }" y6 b$ P
    pause$ V9 t+ M# A3 I' V
    %**************figure(3)******************! p* a( t+ P5 m9 b, i( W! d  v& F, E2 X
    figure(3), m$ X4 ]( N& W8 u) o2 J# U
    subplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图
    9 e5 F7 J. x* s, ~$ Pxlabel('时间t');7 A& X/ Z4 T, @7 @5 B% R
    title('调制信号的时域图');; u& `# ]* c- v
    subplot(3,1,2);plot(t,sfm);                              %绘制已调信号的时域图6 U4 g: S/ y7 V6 Y7 m; f+ u; @
    xlabel('时间t');/ X0 N0 P1 ~4 E1 w
    title('无噪声条件下已调信号的时域图');
    4 o# T6 V2 ?+ R. M" Wnsfm=sfm;                              
    - K2 ?* J" Z3 T8 u+ i7 q* @for i=1:length(t)-1                           %接受信号通过微分器处理" y: J5 O8 m  N) G
        diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;* s. Y: C- ]9 L& l& h3 l8 C
    end
    . J; V" _" v' l! @1 d5 Hdiff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)
    0 m! e- j) Z4 i& u* Vzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;; g8 ?& ~( Z% S' N( g0 _: H
    diff_nsfmn1=diff_nsfmn-zero;
    - p- C! @6 a/ c3 D; n+ q$ `subplot(3,1,3);                             %绘制无噪声条件下解调信号的时域图
    ) ^9 `( ?2 Z# @* K& S/ ~plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
    2 z! r" W+ F( i! W4 Y2 Qxlabel('时间t');                          
    4 U+ L% ]9 F" ^+ k) rtitle('无噪声条件下解调信号的时域图');
    ( i6 D7 q" y# F$ G%*****************************************
    * D( q9 m$ V% m. z$ t0 `: z# Hdisp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')& o: |7 D7 j2 n% i
    pause
    ' @7 m. G" f# K%**************figure(4)******************+ r# o9 l* y; a! D. \! C" z
    figure(4)
    ; Z) c- s' i5 r1 ssubplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图
    . X7 ]3 {; a. I1 t. mxlabel('时间t');3 u7 m% |4 S' c3 E+ K
    title('调制信号的时域图');! @. b% b% S3 X
    db1=am^2/(2*(10^(sn1/10)));                   %计算对应的小信噪比高斯白躁声的方差5 O7 q, E9 e7 z- F1 O9 Z+ T) F
    n1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声
    7 R* Y8 @9 {9 C4 K& l! _7 nnsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通2 ^- @# B! [: J$ ^+ w
    %                      %过信道传输)3 c, l, t" M$ _& I1 u  g4 a' M8 N
    for i=1:length(t)-1                            %接受信号通过微分器处理+ q7 y1 u& j" O. m
        diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;# Y3 |) I- E& @" I9 {+ k
    end
    3 Y( c* {. j$ D2 }diff_nsfmn1 = abs(hilbert(diff_nsfm1));   %hilbert变换,求绝对值得到瞬时幅度(包络检波)# U: U1 `! k, l0 G4 t5 t
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    8 O$ s; D. h- cdiff_nsfmn1=diff_nsfmn1-zero;
    ' z; i" g+ X% ]4 k7 o: O0 k0 Qsubplot(3,1,2);
    4 f" r5 f1 x0 S3 o6 m! Z' V4 }6 pplot(1:length(diff_nsfm),diff_nsfm);      %绘制含小信噪比高斯白噪声已调信号的时域图" }6 @- z! P( I1 j# j! n% I! m% o
    xlabel('时间t');
    6 S6 U' n, \8 P  B4 s* C5 rtitle('含小信噪比高斯白噪声已调信号的时域图');
    5 j' ^- [3 D7 {. I4 f, B% I! ysubplot(3,1,3);                        %绘制含小信噪比高斯白噪声解调信号的时域图
    , b* Q: K8 z5 u1 _plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
    ' s) h2 W: E; _% w8 ]! rxlabel('时间t');                          : }5 I+ ~) |+ ?. F4 }/ n
    title('含小信噪比高斯白噪声解调信号的时域图');
      |9 ]1 D/ y! w4 \" J: m" t' m/ E%*****************************************
    8 b% S  i/ A# q3 ?disp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')+ O8 d1 P. R9 ~
    pause
    % d" \2 p* b' \  T%**************figure(5)******************' L) ^3 K6 V  x. \  l
    figure(5)9 t2 O  k! @3 ^; m% Z, R3 m/ }
    subplot(3,1,1);plot(t,mt);                                   %绘制调制信号的时域图& W& S* D0 j- m0 _8 y/ X) p8 a2 L
    xlabel('时间t');
    % u! |: C' E, v0 a% P7 F" Ltitle('调制信号的时域图');
    - f* I2 n1 B- g/ V; R/ k4 ?  [db1=am^2/(2*(10^(sn2/10)));                   %计算对应的大信噪比高斯白躁声的方差, A' l1 y% X( n; |% H
    n1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声
    3 P) L5 ^  Q0 `) }  |nsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通过信道传输); j! u1 R+ [, A
    for i=1:length(t)-1                             %接受信号通过微分器处理
      p- J, j% ]; a' X& ?, [+ ]; C# n    diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
    ( ]1 k; R- X2 ]1 U5 Dend
    ( ~3 G) H- g, ~/ B" @diff_nsfmn1 = abs(hilbert(diff_nsfm1));            %hilbert变换,求绝对值得到瞬时幅度(包
    4 A' w+ ]' \, R( a" _  P%                      %络检波)
    + @! i# |- e' K% I% Mzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;( X& r5 Y1 }9 N$ G5 H
    diff_nsfmn1=diff_nsfmn1-zero;
    0 D. `( g; T# Fsubplot(3,1,2);
    ( N6 y) F8 O( n5 x' w9 h* n9 xplot(1:length(diff_nsfm1),diff_nsfm1);             %绘制含大信噪比高斯白噪声已调信号
    5 ~. |6 _1 X, R0 [; W4 Y& V%                      %的时域图+ [2 D& X2 D3 N8 j
    xlabel('时间t');
    ( Q$ P5 V; m0 c& A8 ^title('含大信噪比高斯白噪声已调信号的时域图');' V  {# [. ?9 g  E* [7 M( `
    subplot(3,1,3);                                %绘制含大信噪比高斯白噪声解调信号* }7 H" ?2 y3 a
    %                      %的时域图
    : y1 I/ W1 v6 d4 I- d+ H+ Zplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');, b' Z% }( [& \. ~. w
    xlabel('时间t');                           
    $ Z. Y" ?5 z5 K' Y! Etitle('含大信噪比高斯白噪声解调信号的时域图');
    + V0 k" {  \1 A%*****************************************% X% q" [2 v! a5 y  L/ Q
    %******************结 束*******************" a# B  s/ J5 c8 G
    ; @2 I) B' x! h! p

    6 S+ U- l9 j9 h8 A7 E0 {4 k
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    李秋锐        

    14

    主题

    14

    听众

    76

    积分

    升级  74.74%

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

    [LV.4]偶尔看看III

    社区QQ达人

    $ L# r% |3 z; l  W0 L. h
    * W2 D1 E" D$ ?7 \% q% Z. Z
    - y& d5 k  w* V; I
    。。。。。。。。。。。。。。。
    ' d# P0 H0 l! Y/ ?* g$ |
    % k" C" J+ \( w0 ^" o
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-6-14 12:46 , Processed in 0.379282 second(s), 59 queries .

    回顶部