QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2239|回复: 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. l3 i" h5 ?( b2 d, e2 D4 W
    %频率调制与解调的Matlab演示源程序/ \4 A  ]' l  h" M% R  ]3 a
    %可以任意改原调制信号函数m(t), |- u6 A" X% C* h! M
    %电子信息工程  杜怀超 091308305  
    7 W' F6 y4 g% z. {; ?! X! c& M%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    7 k( `7 x& U8 D7 |! J: z%*****************初始化******************
    6 g+ e) U" o# H; \echo   off       + ^2 b" h* A6 D
    close  all
    / o! W. Q: ]9 \# H% Vclear  all
    ; Y9 ]2 l6 ~; ?' U* B5 {, F$ P* Kclc
    1 \! Z6 D$ U8 r# D0 z3 {%*****************************************
    8 A2 y2 k9 O& S! i+ |7 G: ~%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·6 ^; a4 Q7 G9 d. y/ f
    %****************FM调制*******************
    3 [6 Q; Y+ O+ ]. ]dt=0.001;                                   %设定时间步长6 r8 @* b& y$ ^& a
    t=0:dt:1.5;                                       %产生时间向量
    " v! P$ }3 `6 e( i' P1 N% Zam=5;                                      %设定调制信号幅度
    ( \2 U5 {+ f) o% p: U5 y  Ufm=5;                                      %设定调制信号频率/ e# d( S" }$ T' T: c3 O
    mt=am*cos(2*pi*fm*t);                        %生成调制信号1 T4 l/ P4 [! b* ^. k$ J! I! N
    fc=50;                                      %设定载波频率
    $ [; T3 Q. c3 a/ `# B  x4 e) K, @ct=cos(2*pi*fc*t);                             %生成载波
    ' E+ i0 j/ w% Rkf=10;                                      %设定调频指数* ^3 M5 I7 z* X: |( K) M
    int_mt(1)=0;- M/ ^5 v5 p6 o" e8 R
    for i=1:length(t)-1  
    6 S5 S8 ~. ~* F    int_mt(i+1)=int_mt(i)+mt(i)*dt;               %求信号m(t)的积分
    ! }' B) J5 |9 S2 jend                                          %调制,产生已调信号
    ( S) }. j6 q) c- a: X- C' }sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt);            %调制信号4 r0 e/ q. N6 v5 {$ r
    %*****************************************5 ]/ }' j- F* P0 `
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    2 K6 G: b2 E: X- i: L) a0 L; Z%*************添加高斯白噪声**************7 F5 Y8 Z: w; j+ q( r
    sn1=10;                                     %设定信躁比(小信噪比)5 W4 s. y$ ?  `, E+ d" _$ r
    sn2=30;                                     %设定信躁比(大信噪比)0 f# S0 h( h+ H7 a3 z- X1 v
    sn=0;                                       %设定信躁比(无信噪比)
    # X6 l6 K8 M# g8 l/ |db=am^2/(2*(10^(sn/10)));                     %计算对应的高斯白躁声的方差5 I8 E6 g% `- V8 Y
    n=sqrt(db)*randn(size(t));                      %生成高斯白躁声
    ' k& {- `6 C3 nnsfm=n+sfm;                                %生成含高斯白躁声的已调信号(信号通
    1 K4 k, l7 V( N5 J+ w%过信道传输)- ^3 o0 ]% Z- d2 z5 Z- _
    %*****************************************
    5 y- a  i0 \- c# S( `" p%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    3 Z% `- C6 ^) I: S* n7 h%****************FM解调*******************
    $ R" k: p3 k1 Ffor i=1:length(t)-1                             %接受信号通过微分器处理7 y; U; _. P/ v% X
        diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;: V) N" a0 K) a
    end
    ! `" n# {9 J: S+ P' j6 d" Pdiff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)
    ; T2 t8 v3 }2 ^  Wzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    5 n( N% ^* ~3 s- o9 a6 ndiff_nsfmn1=diff_nsfmn-zero;3 b/ @8 [6 i8 H! b8 h( _! x
    %*****************************************2 i7 p& X' h0 Q
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    6 a- M  a( p: ?$ }: ?' @3 [%**************时域到频域转换**************; X" _8 d% o( u  s
    ts=0.001;                                    %抽样间隔
      V! F/ ?  Y' C+ tfs=1/ts;                                      %抽样频率
    % I! g# M$ n1 T: p) P9 ^; r2 vdf=0.25;                                     %所需的频率分辨率,用在求傅里叶变换
    1 B9 R3 l/ p5 b8 u& G8 f%                      时,它表示FFT的最小频率间隔2 b: P, s2 Q3 {
    %*****对调制信号m(t)求傅里叶变换*****
    , T+ a1 j4 x* d- `: Wm=am*cos(2*pi*fm*t);                         %原调信号9 _; e$ ~1 @2 Y! A+ |( P
    fs=1/ts;( m0 d3 D5 e& ^& b* p, A1 U4 M
    if nargin==21 @& G5 z# U  V/ ^# S) Y9 M
        n1=0;2 I4 z0 `# F4 z6 g
    else2 b" U& ~# L% M' n/ `& k9 c5 S' G
        n1=fs/df;
    , p7 K* u( l% k& M! iend7 ^, d0 }( T( q( Q: G/ q
    n2=length(m);; [6 l4 z. s% H# f
    n=2^(max(nextpow2(n1),nextpow2(n2)));
    + B9 }% D% A, T. AM=fft(m,n);
    - e, F; Z) Q* Z0 H) h( v3 Q7 Rm=[m,zeros(1,n-n2)];) U8 |* ~) R4 u% ~
    df1=fs/n;                                   %以上程序是对调制后的信号u求傅里变换; L3 J. K7 e7 w2 o* L2 ?# R
    M=M/fs;                                   %缩放,便于在频铺图上整体观察
    . u( w. J) v) t9 L6 A$ z6 Tf=[0:df1:df1*(length(m)-1)]-fs/2;                %时间向量对应的频率向量" q0 B( p" ~$ @. ]: `9 V
    2 o: Y( O7 P; a' ^1 q
    %************对已调信号u求傅里变换**********
    1 r2 F  U' K- ]4 h% d5 x2 O' Efs=1/ts;. ~0 h- l; x5 S6 i' U+ t
    if nargin==2
    7 }4 S& L- k: W4 X: f) W    n1=0;
    4 F# ?# |2 f+ ~3 m0 W$ h# P$ W. K! Uelse- B$ S) W# p9 r* N
        n1=fs/df;- G" r0 K7 g' c5 f! |2 _$ E
    end
    - [: b5 r; O$ in2=length(sfm);
    5 _' G! v- n# z" u4 Dn=2^(max(nextpow2(n1),nextpow2(n2)));" G/ u9 e/ r. P, y) X$ \6 A$ }7 |
    U=fft(sfm,n);# w, `; q9 z4 _' F5 T
    u=[sfm,zeros(1,n-n2)];
    4 K- C- e# n: H% Z% U0 |3 S+ v) t" z% mdf1=fs/n;                                   %以上是对已调信号u求傅里变换
    : |* Y' H8 U& @' f) p, oU=U/fs;                                    %缩放
    / p# g- H% W0 u2 ?6 C/ o%******************************************
    2 s1 r) ~& K5 T1 R( M%*****************************************
    / f, y* e/ y( {1 p( B  Q%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    # M  g- e( Z. q3 X8 F) Q& P%***************显示程序******************! @1 v6 L! B' Z/ k$ c1 t: Y
    disp('按任意键可以看到原调制信号、载波信号和已调信号的曲线'), b0 ~& w4 h0 L2 }
    pause
    . ?5 F! s' K5 e7 Q! N% o0 }%**************figure(1)******************
    7 Q; I! p6 q  n1 S6 `$ h$ l4 X: Jfigure(1)* u  z! ?* Z. K, b5 ~5 }
    subplot(3,1,1);plot(t,mt);                                 %绘制调制信号的时域图
    2 l) b9 J7 I" ]xlabel('时间t');
    . Q* ?, N6 k* K" ]/ Rtitle('调制信号的时域图');" P+ P  Y. t4 ^1 s" I3 p% o% @4 `& L. K
    subplot(3,1,2);plot(t,ct);                               %绘制载波的时域图
    + V) v" [% m% x. D4 t5 Axlabel('时间t');" V% s" {& X3 I3 s3 r3 `
    title('载波的时域图');
    5 Y: w3 m4 ~# ^# k# B5 [5 ~, \& gsubplot(3,1,3);
    3 h* P6 `5 M1 V! f" N8 b* hplot(t,sfm);                                                  %绘制已调信号的时域图& N+ U. T- S7 a% y6 u( d$ k
    xlabel('时间t');4 I& N3 V1 }' f( Y) d' x
    title('已调信号的时域图');
    ! _$ f3 }/ }1 O7 |& z! w%******************************************) x1 l, w" i2 R  w. k
    disp('按任意键可以看到原调制信号和已调信号在频域内的图形')) l9 Y9 X/ r; k0 C% K$ i6 r
    pause
    , p+ b1 s$ X0 ?%************figure(2)*********************/ h! \6 a* Z5 F- \
    figure(2)8 v# n  s2 d2 j6 I; M
    subplot(2,1,1)
    ; r9 i8 p5 C) v; a: \1 Zplot(f,abs(fftshift(M)))                        %fftshift:将FFT中的DC分量移到频谱中心
    . ]0 c$ t5 i; b8 [" c' b% T8 l, dxlabel('频率f')$ p( T1 r# o0 t3 ]9 k6 n8 }
    title('原调制信号的频谱图')
    - k) l1 x. b' }7 J/ p! qsubplot(2,1,2)" [( x, F9 I" ?) C/ v6 J6 ~
    plot(f,abs(fftshift(U)))
    / d, e! R9 p3 w. p/ yxlabel('频率f')* o- W& l2 @8 r2 K% b! }: H; y
    title('已调信号的频谱图')- A9 J) ]: Q1 }4 ~9 R
    %******************************************
    ) f' s# u- |, t( [disp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')* P5 s, j) D' g2 t  _, M- p
    pause
    0 F* \1 J6 ]; E: v: h* L%**************figure(3)******************0 l1 G7 p+ P1 K6 n2 K3 Y
    figure(3)% V9 n8 R+ P2 }2 M: }, B- r
    subplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图
    7 Z3 f: ?7 i; x8 C0 `3 C2 {xlabel('时间t');5 P1 m4 j! S! x- }9 D
    title('调制信号的时域图');
    - P# N! m- w/ R! ]) M; X2 u  asubplot(3,1,2);plot(t,sfm);                              %绘制已调信号的时域图
    + r! ~0 v- f3 b' h1 Vxlabel('时间t');, a' a4 w) `6 j
    title('无噪声条件下已调信号的时域图');9 @, P( W9 J& R9 ?
    nsfm=sfm;                              + t* I0 m# L5 @, x% x+ P
    for i=1:length(t)-1                           %接受信号通过微分器处理
    & a/ }0 O8 d" ~" T$ `% F    diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;1 |3 `. C/ F& O8 m
    end& X1 @5 ?1 E8 {5 Y- E
    diff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)
    * _/ v( w4 r1 B3 Kzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;+ ?4 h# K6 [: M
    diff_nsfmn1=diff_nsfmn-zero;: G7 q& s) d8 c! @/ E
    subplot(3,1,3);                             %绘制无噪声条件下解调信号的时域图* A. E. ]$ }, q' G$ H0 Q, m' }9 X; p
    plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
    , k9 |: x* O3 M  f/ ~6 p) o) rxlabel('时间t');                          # R: q9 ?0 ^" R; V! n
    title('无噪声条件下解调信号的时域图');
    # x4 l, h- T* w+ x: R- ]%*****************************************) C% o, h* s* [% K9 O/ y9 }' }# n
    disp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
    2 z( X* Q# v) e5 Y. ^8 lpause
    ' p7 x0 a( t$ q0 [# e%**************figure(4)******************
    % J' d. g) X& `. X, x( Yfigure(4)
    ) d, i4 S% Z- Z  fsubplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图" Q7 F8 g- m$ Q% V# _  ]
    xlabel('时间t');  |: S; T% n3 L- ^. s
    title('调制信号的时域图');
    * J1 D$ ^5 \9 ?* ~% _2 P9 }db1=am^2/(2*(10^(sn1/10)));                   %计算对应的小信噪比高斯白躁声的方差
    # M8 Z& S$ Y( T5 D3 m' s6 fn1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声3 }1 F. a3 e7 y7 o, q
    nsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通3 Q* `0 f, j: x# i
    %                      %过信道传输)9 N+ X* v6 M6 p5 |) f; m- ^# R2 f  J: k
    for i=1:length(t)-1                            %接受信号通过微分器处理" h0 f; @- `  m; E
        diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
    5 a; D& U9 T$ e5 ?; ]+ bend, L+ a/ p6 i3 t% a) n
    diff_nsfmn1 = abs(hilbert(diff_nsfm1));   %hilbert变换,求绝对值得到瞬时幅度(包络检波)
    $ m6 S. m& N5 l' j" [7 p6 tzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;; N5 v- {8 `" C$ h0 N
    diff_nsfmn1=diff_nsfmn1-zero;
    , V4 D6 K: ^4 D( p& A; H6 F) osubplot(3,1,2);9 C& m/ I! J! b  g( a
    plot(1:length(diff_nsfm),diff_nsfm);      %绘制含小信噪比高斯白噪声已调信号的时域图
    ! @/ i& |+ w( n9 u  B3 O! wxlabel('时间t');$ s1 G9 n$ `: u% ^! r  J3 ^5 |
    title('含小信噪比高斯白噪声已调信号的时域图');  c8 z6 X7 F) Q* m$ j; x6 _
    subplot(3,1,3);                        %绘制含小信噪比高斯白噪声解调信号的时域图
    8 n0 Q) \4 V& ~6 G( `6 ^plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
    $ ]1 i5 S" t! I; {, E9 Txlabel('时间t');                          
    * @- Q  a" a7 ?' A9 c5 z0 ctitle('含小信噪比高斯白噪声解调信号的时域图');
    & \2 V) L1 @0 r4 J  O  j. I%*****************************************! a2 G8 u+ ]6 N7 s$ z$ ^
    disp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
    ! w( G4 U& g# c- spause$ D" ?  j) |, \8 @) r& E
    %**************figure(5)******************) w1 J% M9 L4 \- q
    figure(5)
    4 C$ ]! @' e( W8 W# Gsubplot(3,1,1);plot(t,mt);                                   %绘制调制信号的时域图
    ' U5 R$ e5 Z1 Txlabel('时间t');
    : r; a& D- x. N# _title('调制信号的时域图');: k* o" ~9 Q' B9 [: z% i1 B
    db1=am^2/(2*(10^(sn2/10)));                   %计算对应的大信噪比高斯白躁声的方差% [! U4 o3 y) p! }
    n1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声
    . S6 c( {5 }! W* C6 ?, U" L9 ?nsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通过信道传输)
    1 m# I% O$ c* m1 O/ Bfor i=1:length(t)-1                             %接受信号通过微分器处理
    7 H1 I5 X( c* @8 ^" t# ?    diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;7 q7 d/ B& I/ H# [, i# l! i
    end0 e. y4 l) u1 ]6 {% D2 R4 V
    diff_nsfmn1 = abs(hilbert(diff_nsfm1));            %hilbert变换,求绝对值得到瞬时幅度(包
    9 C9 a! P. q8 M3 {- J( }/ E%                      %络检波)
    ' m) W) y. y5 k' ], f9 g0 Wzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;5 g2 ?6 |4 w/ o* B7 i* j7 C# M
    diff_nsfmn1=diff_nsfmn1-zero;
      M/ y, S7 a9 N, B. P' i2 Xsubplot(3,1,2);  A, Y$ s( M$ [( P" s7 ^1 O/ N
    plot(1:length(diff_nsfm1),diff_nsfm1);             %绘制含大信噪比高斯白噪声已调信号* y0 m; o' g+ H: W5 W, ?1 |8 s! `
    %                      %的时域图
    : x: j  v6 F  s& a, b! Nxlabel('时间t');
    / B* ~# C' g7 u! c9 ntitle('含大信噪比高斯白噪声已调信号的时域图');" U& t- v# w2 n. w- J( s9 V
    subplot(3,1,3);                                %绘制含大信噪比高斯白噪声解调信号% `- {* B2 \, [
    %                      %的时域图
    8 D7 O7 Z9 t( n1 b8 e  B( m) G; A  i6 [plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');3 C' \# J  R& }' p0 c
    xlabel('时间t');                            ( S! p; V- [, k& r% Y9 P# @
    title('含大信噪比高斯白噪声解调信号的时域图');
    " a% V5 h  {7 ?, P: }%*****************************************. t7 I) F# T. F- u4 \& I3 f  f# y! Y/ v
    %******************结 束*******************$ S: J0 C! @, R/ e) Q2 [* U

    ' l" ^' k. t0 D$ e2 D' s- g
    5 j5 F/ c8 X. \
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    李秋锐        

    14

    主题

    14

    听众

    76

    积分

    升级  74.74%

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

    [LV.4]偶尔看看III

    社区QQ达人

    " c+ S1 E* h2 \1 O2 |. q# O4 U  y

    + x! f% O- X, c: Y! o! P6 s
    % R: i5 n$ w% v# w: u! L3 z。。。。。。。。。。。。。。。
    3 d8 F5 ~) z* X& I8 H7 J- R2 m2 D$ {& C" m5 e
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-10-9 03:07 , Processed in 0.283150 second(s), 57 queries .

    回顶部