QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2243|回复: 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
    ; Y7 Y* ?5 \/ H" v' f; T%频率调制与解调的Matlab演示源程序
    * s8 z9 {3 D/ y  x%可以任意改原调制信号函数m(t)
    & w9 U7 c* C, \: @%电子信息工程  杜怀超 091308305  : r  V5 W! y" y& H" m
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    . A+ x/ m1 F6 e0 E%*****************初始化******************$ A# A$ \8 s0 e4 L
    echo   off      
    8 m% ]1 K4 y9 Y6 B+ @/ `0 {3 ?: {close  all
    5 P; s! l$ ?+ |$ J- c0 [3 J: _  _clear  all
    . y$ j9 m  S- E9 x* b* ^clc" t7 M: U' ?1 c7 `! g/ ^4 O
    %*****************************************- u5 }# _- A2 M, A' l1 H
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    ! ~/ R, W2 `) h1 \0 n: D%****************FM调制*******************
    4 `; y# u* u+ e% o8 |dt=0.001;                                   %设定时间步长, W, G; L0 }# C1 B5 Z( {& ^
    t=0:dt:1.5;                                       %产生时间向量5 Y9 c# [6 h- T9 `3 O5 z, L# z
    am=5;                                      %设定调制信号幅度/ J: c* {5 [% h. ]: \$ ~7 R
    fm=5;                                      %设定调制信号频率/ d2 b  A% Z# \  g4 Q
    mt=am*cos(2*pi*fm*t);                        %生成调制信号$ z: a5 j0 ]$ p2 j+ d+ P. S& t
    fc=50;                                      %设定载波频率
    0 u- P% _3 a3 [9 s/ }ct=cos(2*pi*fc*t);                             %生成载波
    : m3 N) U$ E1 V. p6 u0 @' ykf=10;                                      %设定调频指数6 b' [  f9 x2 b. ?* o$ e
    int_mt(1)=0;' L) M4 t% T- ?3 L+ [8 b
    for i=1:length(t)-1  
    2 ?5 v* o1 D( t" T    int_mt(i+1)=int_mt(i)+mt(i)*dt;               %求信号m(t)的积分2 \" L+ I) B3 h: }! Y
    end                                          %调制,产生已调信号" d9 t7 m+ ?; x% {
    sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt);            %调制信号
    8 H7 h1 k8 r# |+ B% B2 f3 l! M1 `%*****************************************3 ]- ^4 e3 o$ r
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    & z# |. E. r) b0 Q" v- ]%*************添加高斯白噪声**************
    2 y- s+ P6 A2 C: q- l$ s8 Wsn1=10;                                     %设定信躁比(小信噪比)3 R- z) |) j; X" x; x
    sn2=30;                                     %设定信躁比(大信噪比); x2 |  [2 e) n# |
    sn=0;                                       %设定信躁比(无信噪比)
    0 P2 g: Y- D) jdb=am^2/(2*(10^(sn/10)));                     %计算对应的高斯白躁声的方差
    , y5 ]. t2 @& N8 g8 ]( f4 ?n=sqrt(db)*randn(size(t));                      %生成高斯白躁声
    0 x4 d# j3 _6 O1 a5 Znsfm=n+sfm;                                %生成含高斯白躁声的已调信号(信号通4 z( k  {) M6 A, i
    %过信道传输)& I! c8 }2 A' Y" r
    %*****************************************
    5 J. E6 J) a! q2 R1 S%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
      F  h. i  m1 q/ q, e%****************FM解调*******************( }- @: Y8 {9 I/ Z0 K  E$ g4 b
    for i=1:length(t)-1                             %接受信号通过微分器处理
    7 x' c1 r5 @3 Z( U- q" {    diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;* B; k/ a& k/ I0 _4 b& u
    end
    & j2 M/ g7 C6 Qdiff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)9 H& \9 ~$ F% i% Q- k! @. L
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    . X( k* ?5 x/ h0 Z& B) q, Cdiff_nsfmn1=diff_nsfmn-zero;1 X6 R' ?: A$ s
    %*****************************************
    * C! T6 o/ A0 W0 _" ?$ N%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
      z5 G5 d; X6 z* L0 H! Q%**************时域到频域转换**************
    . `2 S; W" m% n1 Nts=0.001;                                    %抽样间隔
    0 ?/ N! f  T6 x* p$ N5 a# Afs=1/ts;                                      %抽样频率
    * j. r8 |! B" W1 ^& `: Odf=0.25;                                     %所需的频率分辨率,用在求傅里叶变换. b! G) l5 T& b4 [$ q# z6 ^' S" ^* {
    %                      时,它表示FFT的最小频率间隔2 V$ Z4 h7 {: h! N0 L$ p
    %*****对调制信号m(t)求傅里叶变换*****
    " Z1 t! e- f: D- @4 W$ Ym=am*cos(2*pi*fm*t);                         %原调信号2 z' S) w0 G1 N
    fs=1/ts;6 E' ?5 d3 C  N2 F& n6 @4 K& ?
    if nargin==2
    : |! _& F$ k4 [4 F' t8 }* t    n1=0;
    ) A1 [% ?# F; [0 Aelse
    ! e9 U' N0 O& D    n1=fs/df;
    0 q3 G) `7 z2 {/ Y  a; g% vend. a6 l: i6 E+ P1 x, v3 v
    n2=length(m);
    $ Y. ~0 @1 O' I' ~n=2^(max(nextpow2(n1),nextpow2(n2)));
    - ]8 j! y- D! s6 s/ fM=fft(m,n);
    " X0 p, y+ e* b# @/ Im=[m,zeros(1,n-n2)];, ?& k; \8 Z4 [  _  Z8 E' T8 `8 a
    df1=fs/n;                                   %以上程序是对调制后的信号u求傅里变换
    % u: C- g! a" ?+ U8 s1 LM=M/fs;                                   %缩放,便于在频铺图上整体观察
    # I" l6 U4 B" [3 qf=[0:df1:df1*(length(m)-1)]-fs/2;                %时间向量对应的频率向量
    - U" H! b2 P8 p- ?/ d, C% g! t& [; ?
    %************对已调信号u求傅里变换**********/ `0 z, q# v2 `6 @  Z8 {  D6 l( h/ L
    fs=1/ts;: |) m/ M% J" `% ]! q0 g" R
    if nargin==25 L, O: e6 R$ J# ^+ Q
        n1=0;
    8 y. d$ @: `% g' Y- Selse
    % }) v' G, B. l4 W8 b, d9 B/ _    n1=fs/df;
      V7 z' w4 `7 ^" F- `& mend
    ) P- q# F% R+ s1 b+ @n2=length(sfm);
    : @% D; J9 F+ p; h: G% f2 An=2^(max(nextpow2(n1),nextpow2(n2)));/ _3 P* ^+ @8 A$ u1 W. p0 |
    U=fft(sfm,n);" A" _* E( j9 ^" y
    u=[sfm,zeros(1,n-n2)];
    8 a  b, `* ~/ B- E; Hdf1=fs/n;                                   %以上是对已调信号u求傅里变换
    : S& C) n/ ]! h  T3 UU=U/fs;                                    %缩放
    0 f4 W/ i7 t/ o9 Q%******************************************
    3 O2 R7 {; a% ?%*****************************************
    ; l  D/ x* t6 G4 A& @& W7 z%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    6 c6 {" `9 n( \* z4 I7 M%***************显示程序******************
    ' [' u! p1 B. A8 \1 |8 u$ Ndisp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')
      z4 U# n$ q4 k  A% G+ upause
    8 D, B3 l' ^: f! s( g%**************figure(1)******************1 f( ^7 I& c& [% q4 y2 f
    figure(1)" E2 n& U/ o" n4 r% s! p3 u* R
    subplot(3,1,1);plot(t,mt);                                 %绘制调制信号的时域图% s/ k; m6 p  Q- `8 D8 y0 T. O
    xlabel('时间t');) u1 {% v5 h8 b) D) I& m& Q
    title('调制信号的时域图');
    ( j2 N% f% |# ^" ?; z- t8 ?* D. Msubplot(3,1,2);plot(t,ct);                               %绘制载波的时域图% e% Y) A3 M: {0 U: n( e
    xlabel('时间t');
    ! a- |# @/ A: X: ~- Ctitle('载波的时域图');
      U$ e, J+ F2 ]0 Y5 Osubplot(3,1,3);: C/ X6 O" b7 m) l9 I2 D1 ?
    plot(t,sfm);                                                  %绘制已调信号的时域图
    ! X! H# n. K2 [/ H( N* Q! V" Rxlabel('时间t');3 N# T$ K% k" C# R! ~
    title('已调信号的时域图');
    " {2 I1 l, V/ b6 s/ x( V" `  a' c0 _%******************************************# {- p2 a* v- P8 R! c
    disp('按任意键可以看到原调制信号和已调信号在频域内的图形'). u; }# ^6 Y  D# [' B% Y9 }3 ^) q
    pause" ~$ Z1 e3 R$ I# H! v# X
    %************figure(2)*********************
    , J: `; c- o4 b9 ifigure(2)' L- J, V1 `) z- o1 Y! [
    subplot(2,1,1)5 T- v0 {/ A! J9 o
    plot(f,abs(fftshift(M)))                        %fftshift:将FFT中的DC分量移到频谱中心  c% l3 ~% e9 v. f, N
    xlabel('频率f')
    5 x5 g( e5 V# ]4 q! M3 A( wtitle('原调制信号的频谱图')
    ! M: F. k/ Z* ?2 k. }. Csubplot(2,1,2)3 M* N1 M, S7 c( }- O/ F3 l
    plot(f,abs(fftshift(U)))  \, b9 ]4 ~+ V
    xlabel('频率f'), C; _! |6 B6 s! j# k
    title('已调信号的频谱图')
    - P, D( |+ ~0 s. r. R%******************************************
    4 d( U8 [+ M9 G* X" adisp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')
    + W" e' i' b6 z; K; _pause6 D, @: m$ T3 T$ }
    %**************figure(3)******************
    + b- a0 v# n1 u& H: n  m0 sfigure(3)
    * j: \! c' R1 u4 a4 t# Zsubplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图
    - Z+ }+ L, \% Z- r3 e+ F! H& {xlabel('时间t');
    6 C- T0 Q4 x7 ~6 t& `- k3 r& btitle('调制信号的时域图');/ o' L- f1 I8 w! a, C; l
    subplot(3,1,2);plot(t,sfm);                              %绘制已调信号的时域图
    " s) j+ L, u' S5 X: H. j7 ?xlabel('时间t');( t6 ^; u6 k. h8 X! ?
    title('无噪声条件下已调信号的时域图');
    ( W* b9 u3 Q, S$ v$ ansfm=sfm;                              2 i+ K  Z0 @5 I4 U: U. x6 u9 C
    for i=1:length(t)-1                           %接受信号通过微分器处理
    . M2 T) x( A  s; G    diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
    0 h# Y% r! ]: B* ^) lend! z* P- Z) v6 A2 ^
    diff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)+ |- Z, Z% _3 K% Q( b' p$ x
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    8 {* \0 B5 u) Y1 z" C/ Idiff_nsfmn1=diff_nsfmn-zero;' B; S) }- f$ a- |
    subplot(3,1,3);                             %绘制无噪声条件下解调信号的时域图
    ' @6 c" s! ^. j5 Nplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
    ; s* Z# t! b" W) ~/ T( T. ?xlabel('时间t');                          
    5 X( N; ^6 T7 `( P7 Atitle('无噪声条件下解调信号的时域图');
    % m8 T3 Z# ?, o- X%*****************************************
    / a6 ~) @6 B; l: q0 {  L/ C$ P- bdisp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
    6 u. [$ C) C" J0 g9 C: Cpause; H6 I  a3 H- B9 v5 M6 B' q' G/ K
    %**************figure(4)******************3 R0 K( ^; C+ X! c1 N4 V
    figure(4)1 z: R/ E0 M1 F* A% b9 A4 e1 ^
    subplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图) M% c- D! ^' [/ C# D% D; D7 @
    xlabel('时间t');
    2 F0 E8 S( R* |- c3 Q& atitle('调制信号的时域图');9 S$ i7 c( F4 D' f1 e; F! A5 P
    db1=am^2/(2*(10^(sn1/10)));                   %计算对应的小信噪比高斯白躁声的方差/ k8 t9 T  U: g" b, K# B8 n& n' l
    n1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声
    % M/ l! f8 f  }nsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通
    0 n; q2 }9 s* U2 ]- y/ c%                      %过信道传输)  Q" p; x, I. g  G
    for i=1:length(t)-1                            %接受信号通过微分器处理
    + ~7 d) V6 b4 N- j3 K7 \" p    diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;' F7 m. b6 E6 }
    end4 K+ G8 f! ~6 [& v& ^
    diff_nsfmn1 = abs(hilbert(diff_nsfm1));   %hilbert变换,求绝对值得到瞬时幅度(包络检波)2 f0 c; p8 j6 k$ F) _
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;; k- ^; b7 e  [1 Y  j6 S2 b
    diff_nsfmn1=diff_nsfmn1-zero;
    6 {4 ^! P+ o* bsubplot(3,1,2);
    ) M$ R2 ^3 p5 K" _plot(1:length(diff_nsfm),diff_nsfm);      %绘制含小信噪比高斯白噪声已调信号的时域图8 Z. u' e, ~' H& d6 y3 x! W
    xlabel('时间t');
    - M, M1 x: H4 C; Btitle('含小信噪比高斯白噪声已调信号的时域图');
    4 h) B* Y, g7 h3 Z4 r3 nsubplot(3,1,3);                        %绘制含小信噪比高斯白噪声解调信号的时域图
    9 z2 Y; M6 ?9 ]7 |' b% P2 Tplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');" K1 I8 e& w6 `8 t, m! O2 s8 v% X/ w- B
    xlabel('时间t');                          
    1 a3 S# f% A2 R% Mtitle('含小信噪比高斯白噪声解调信号的时域图');; F0 g$ g' \' s% T, B1 d
    %*****************************************
    4 f" s7 C% p5 C( [5 _0 idisp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
    ( A4 B0 j& W) n/ y. F9 J* Cpause  f5 ?1 c2 [: G
    %**************figure(5)******************8 B# T% ^4 h$ L( @  f' ]% r  d- q
    figure(5)( x, O; h7 b5 J8 H  F( S
    subplot(3,1,1);plot(t,mt);                                   %绘制调制信号的时域图
    " q, A- d6 s, n0 V; Ixlabel('时间t');3 K( m+ S/ g( J) a: c
    title('调制信号的时域图');% o3 z) a9 ]) e% m* |+ ^1 g% A
    db1=am^2/(2*(10^(sn2/10)));                   %计算对应的大信噪比高斯白躁声的方差6 L2 h$ R; E1 b$ M2 J) ?2 m
    n1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声3 u& o7 x+ u) R& d" u' g
    nsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通过信道传输)
    2 i6 i. B/ z9 k. Qfor i=1:length(t)-1                             %接受信号通过微分器处理
    8 ^' ^0 g. }0 w8 z$ X6 K    diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
    7 P- D6 B# u) ?% k1 [* }0 ~end; V3 |8 k! e6 ]. B
    diff_nsfmn1 = abs(hilbert(diff_nsfm1));            %hilbert变换,求绝对值得到瞬时幅度(包
    " \. j9 }* [. u%                      %络检波)
    * ]+ I4 r" s4 xzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;  s4 d# T% Z$ s
    diff_nsfmn1=diff_nsfmn1-zero;' W) o! h* @+ s$ P" R; a
    subplot(3,1,2);
    : G9 n  P4 Z2 x; R2 G$ {plot(1:length(diff_nsfm1),diff_nsfm1);             %绘制含大信噪比高斯白噪声已调信号# \* E' m+ P. d1 f0 ]* b( ^. y0 U
    %                      %的时域图
    & c' r* b4 h1 g, C' v% \xlabel('时间t');3 K* t% h: j* d6 Y4 `% Z* d4 q
    title('含大信噪比高斯白噪声已调信号的时域图');
    . D7 e: o+ L8 t0 _2 v6 ]' qsubplot(3,1,3);                                %绘制含大信噪比高斯白噪声解调信号. f$ B/ N: \" s6 H
    %                      %的时域图
    7 `. E! ]) H9 F" T# Vplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
      Y7 A7 z! @, q: Yxlabel('时间t');                            % e8 j" Y/ Z: k' |5 o
    title('含大信噪比高斯白噪声解调信号的时域图');# {- J# j, A; h. \
    %*****************************************0 v: {' ~" w; E8 c
    %******************结 束******************** S+ }. V; `8 n6 e3 n

    " S; S7 Q# V) F  m7 u* _1 P
    - s: @( {2 d% r5 J
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    李秋锐        

    14

    主题

    14

    听众

    76

    积分

    升级  74.74%

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

    [LV.4]偶尔看看III

    社区QQ达人

    - f4 O9 U  n' ^- Q

    2 e/ I. f% w; L, Z/ }
    & W4 ~1 @- v6 p。。。。。。。。。。。。。。。3 g$ w6 r! O' y6 R

    & e, y& {# m1 H% ?1 ^
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-10-10 04:35 , Processed in 2.957164 second(s), 58 queries .

    回顶部