QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2166|回复: 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
    ; d, w; W) i! R%频率调制与解调的Matlab演示源程序  x7 a3 D% N1 v* L5 r% t! J) n
    %可以任意改原调制信号函数m(t)
    1 `& u2 u2 @" W%电子信息工程  杜怀超 091308305  % |+ O, ~" T6 v
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    / Y  [  E* G9 y$ {1 M%*****************初始化******************
    ! |. ^3 E6 `" L9 _/ fecho   off       + @$ a, ?4 V: u# r
    close  all
    % k7 O8 }3 Y+ Q3 w& {* qclear  all
    6 d) s* h6 A+ P& t9 y% r  S: f4 v$ _clc
    # g* P" D; `8 d# G; J' D/ j2 x%*****************************************
    - `+ @% C- t8 H( C%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    ' p0 R0 z2 D; y2 S( y2 m%****************FM调制*******************( G& N" a7 B+ _5 E
    dt=0.001;                                   %设定时间步长
    % o6 r' L1 U5 S3 i: }  b! q7 Rt=0:dt:1.5;                                       %产生时间向量( [0 o; x; U* F; L
    am=5;                                      %设定调制信号幅度5 q7 V! k: I7 d8 n
    fm=5;                                      %设定调制信号频率
    : ^. @* ]3 X. U1 y" o' o9 M7 Gmt=am*cos(2*pi*fm*t);                        %生成调制信号1 A. X' N0 d# Z8 t# ^& w: C, J
    fc=50;                                      %设定载波频率" Z2 \2 V! p# f2 l
    ct=cos(2*pi*fc*t);                             %生成载波9 y7 y/ ?# H1 O0 u
    kf=10;                                      %设定调频指数
    8 E' _& S* k0 i0 t$ {% d* Gint_mt(1)=0;( F4 f* e1 ]5 [" I( i5 l: B+ m
    for i=1:length(t)-1  . s8 K8 @/ S7 w9 K0 E4 ~% b( c
        int_mt(i+1)=int_mt(i)+mt(i)*dt;               %求信号m(t)的积分
    6 i* F; w5 X$ _4 Y! }end                                          %调制,产生已调信号
    7 u+ F) M' |! U4 S1 O! J4 h4 ~1 l4 nsfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt);            %调制信号
    3 o* W( v* q; M7 r. g% {%*****************************************
    " _) \$ G" ^% }& v: t%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·& ^+ Y2 Q* b% @# v, Q
    %*************添加高斯白噪声**************6 x5 b  W* Y, D  H
    sn1=10;                                     %设定信躁比(小信噪比)
      c) q" P, q9 c! |0 zsn2=30;                                     %设定信躁比(大信噪比)
    & T9 _3 z- n! ssn=0;                                       %设定信躁比(无信噪比)( Q- m# f% C  e# J6 w) Y+ O0 }
    db=am^2/(2*(10^(sn/10)));                     %计算对应的高斯白躁声的方差
    ' r3 U! L" V8 [8 vn=sqrt(db)*randn(size(t));                      %生成高斯白躁声9 k+ T5 ]! r3 A- d
    nsfm=n+sfm;                                %生成含高斯白躁声的已调信号(信号通. k# B1 D% P$ L5 o. z1 p. T
    %过信道传输)
    3 f* V+ I* @( e/ v( Y1 p%*****************************************% w/ X8 \- d: u" R1 A
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·3 Y. P! a7 m6 A. T& ~2 w7 F
    %****************FM解调*******************7 E& z0 C+ g' O$ Q8 L
    for i=1:length(t)-1                             %接受信号通过微分器处理
    ; t/ h7 t3 G  P$ V$ y9 j9 X    diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
    * u7 S- b8 @$ `end$ F1 y5 d3 R9 _; p9 @. o  ~
    diff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)7 p% _9 o& P/ X# P
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;3 y  K8 P+ o2 v( ?! j
    diff_nsfmn1=diff_nsfmn-zero;
    $ u/ K; P$ o2 a* r%*****************************************
    ; t! f7 o1 E( a%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·- S8 g$ }9 i6 [; y/ b0 D7 N
    %**************时域到频域转换**************. {$ y" _( ?+ Y/ C7 g
    ts=0.001;                                    %抽样间隔8 o" B: D3 C. t' r
    fs=1/ts;                                      %抽样频率
      K$ t! Y, m# V/ U, S, r' edf=0.25;                                     %所需的频率分辨率,用在求傅里叶变换" a- n, [% E- u" {9 u3 t
    %                      时,它表示FFT的最小频率间隔5 w- M) [6 n7 \( |1 e: |
    %*****对调制信号m(t)求傅里叶变换*****7 {$ A- f3 S  \/ B" E  r* u
    m=am*cos(2*pi*fm*t);                         %原调信号
    6 @2 e; N! a+ S8 ~7 nfs=1/ts;
    $ ?) |  Z5 q/ y$ l) b3 W3 hif nargin==2! T& _/ z* D& i# r1 H, T, H* c2 f$ s
        n1=0;
    * b: h0 `! z# e( e& e; R; h& ]else
    ; s5 ?8 m! L; Z& t* k" g    n1=fs/df;
    & X! o% ~& L6 `1 v0 ]# Y$ fend9 i% q  K' n! m3 ?) \, W; ~, J  f, W. L9 ~
    n2=length(m);
    ! x2 ~( Z% ^. J" L# M0 pn=2^(max(nextpow2(n1),nextpow2(n2)));
    2 u# O% ^+ c9 w) ~. J* U+ f" D' bM=fft(m,n);! N4 ~2 }2 p# O- K2 d- z
    m=[m,zeros(1,n-n2)];. T$ m' _0 i+ p9 ]5 y) G
    df1=fs/n;                                   %以上程序是对调制后的信号u求傅里变换7 }0 Y2 g6 ~. l7 l4 ?( a: z2 h
    M=M/fs;                                   %缩放,便于在频铺图上整体观察
    ( d) @2 ^1 O. S) X) [f=[0:df1:df1*(length(m)-1)]-fs/2;                %时间向量对应的频率向量
    $ b! p: D+ K4 e1 }5 j) O3 o- a& G# w
    / L4 u9 I, V1 ]! h9 ]%************对已调信号u求傅里变换**********/ W, g( R" V, r1 n
    fs=1/ts;
    6 X4 C  w6 }+ Z# Q5 d* oif nargin==2
    # t7 U" D) I# [2 T' N( I    n1=0;
    % L: ]& e5 l" F' R; \8 ^( |# Xelse' s. l$ K3 u% o- ]1 Y& Q. w( q
        n1=fs/df;
    6 X8 @# j( M; X% y7 vend# w5 z- u& D2 U  b4 H! G4 Z" d
    n2=length(sfm);6 i6 r. l3 r$ c: s  h
    n=2^(max(nextpow2(n1),nextpow2(n2)));, M. g$ q" M8 }) J0 E9 W" `
    U=fft(sfm,n);
    # x+ s6 j0 B( \, ~: L2 h  cu=[sfm,zeros(1,n-n2)];" f0 Q& v% k7 w. ~- Y6 d4 s
    df1=fs/n;                                   %以上是对已调信号u求傅里变换
      [3 d& k* j3 H- cU=U/fs;                                    %缩放
    : X/ a3 @$ r% }. a4 Z0 ?%******************************************8 N1 b. ?% v4 _6 g7 a
    %*****************************************6 z+ D" x( }6 K% B
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    : @( }6 v0 ]9 h%***************显示程序******************
    / J2 b; Y* Y$ bdisp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')
    ; K; @2 V8 Y- R. Z1 q/ ypause# W9 t3 j' {& \2 t' H& v# `4 F
    %**************figure(1)******************1 a$ Y: X2 s& j0 Z
    figure(1)% Q- s$ i8 G7 \
    subplot(3,1,1);plot(t,mt);                                 %绘制调制信号的时域图( ^, Z% ~5 O$ A9 e8 z2 Y: H
    xlabel('时间t');! F. X( ?$ }+ W" O, [
    title('调制信号的时域图');# y' Q' o  r/ h: B
    subplot(3,1,2);plot(t,ct);                               %绘制载波的时域图& D: e4 y7 q, Q7 ?! D9 p, W
    xlabel('时间t');7 K# H2 F8 l; d' y
    title('载波的时域图');
    ' a  _  J, s2 T+ n3 ysubplot(3,1,3);
    * \( }. K! c# L# Wplot(t,sfm);                                                  %绘制已调信号的时域图
    - K' G) N& |7 O2 G! Axlabel('时间t');- f$ ^# J3 E4 Q7 W! P
    title('已调信号的时域图');
    ; B! [" @, E, S%******************************************
    4 G3 l6 A" g- R  e0 U+ L6 Y* ?  `8 u: Hdisp('按任意键可以看到原调制信号和已调信号在频域内的图形')
    7 y" O: Y' ?9 [9 p3 Q: p( p& p; Ipause
      D+ L) f/ ]- A. M/ I5 p0 {%************figure(2)*********************
      P6 g' u& \! k, hfigure(2)# u$ C! J+ [3 \0 g# c& j+ v, N$ }9 w
    subplot(2,1,1)
    , c: g- K/ G5 y1 G' E0 {! O* rplot(f,abs(fftshift(M)))                        %fftshift:将FFT中的DC分量移到频谱中心; o3 L$ E% {  t5 r
    xlabel('频率f')
    % z. R1 X9 e2 u8 q8 mtitle('原调制信号的频谱图')
    1 C) d) D+ I. i* r) Csubplot(2,1,2)$ q+ n! Q# X  m4 q. v9 h  o7 r6 W. k
    plot(f,abs(fftshift(U)))
    " i. e2 p  |( I/ @, R  Vxlabel('频率f'): u9 h; J0 ?+ w% z+ v+ s) Q
    title('已调信号的频谱图')
    : b! V- V7 T  N* q%******************************************' {$ t$ W+ D; L6 o5 a
    disp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')! B* U1 F. p2 f$ d7 u; o
    pause
    & U+ ]. s& O  _5 l* H  |%**************figure(3)******************
    : r1 p/ g8 T* K( zfigure(3)  h. r6 F( t$ R7 O9 F$ M
    subplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图
    3 G: G6 ?1 r+ H& `xlabel('时间t');
    2 J7 {+ @1 Y7 b% t3 ^. ?title('调制信号的时域图');
    : D& N) b# d+ ksubplot(3,1,2);plot(t,sfm);                              %绘制已调信号的时域图: F$ a7 Q6 @" J& U
    xlabel('时间t');2 Y( l9 o" i. c( |# t
    title('无噪声条件下已调信号的时域图');# k, E! M, x8 i) ~/ k6 U
    nsfm=sfm;                              * T6 S7 |$ r! L* k: J
    for i=1:length(t)-1                           %接受信号通过微分器处理/ K8 o9 x/ G; }- W" [
        diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
    % e' I* c! I' ]- R6 iend
    * b# G" q9 b5 q2 m7 ~) \/ _( xdiff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)
    & \! F- j* E# A2 p! O9 `; a% dzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;, d, h. {/ @, E
    diff_nsfmn1=diff_nsfmn-zero;
    3 y9 n  m0 l: x1 R5 G- m0 h  gsubplot(3,1,3);                             %绘制无噪声条件下解调信号的时域图4 u6 e( F/ K( j0 d0 Q& R
    plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');; C1 M3 S% B$ |% |
    xlabel('时间t');                          
    3 n1 ?; V2 s4 E) |& K1 ztitle('无噪声条件下解调信号的时域图');0 x9 O6 \2 F1 g
    %*****************************************
    8 x5 Y# ]5 n: c; Q! M+ d" C; {disp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线'); P% z9 f( `8 p; c! o9 K
    pause
    ; r! V1 ~. s7 H7 L9 M  K%**************figure(4)******************3 p1 L, I6 ^7 g: f9 @6 w) W9 l% v
    figure(4)& T# z) o$ u: y, Y8 e
    subplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图: _* I  J) R- c8 j5 d
    xlabel('时间t');/ ]3 L* n  f/ s, N  R
    title('调制信号的时域图');
    3 b' k  `( W2 X& r) T  N6 x: @db1=am^2/(2*(10^(sn1/10)));                   %计算对应的小信噪比高斯白躁声的方差; k9 \# v" W7 [) D6 V
    n1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声" D( @7 Q5 {0 z# q4 n
    nsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通
    ) y0 Z3 H* v+ z9 E%                      %过信道传输)
    ! i& l. Y  f5 P: @  M4 ]' ?for i=1:length(t)-1                            %接受信号通过微分器处理
    . O& q* q& e! I) h    diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
    & E9 Q9 l) ?& H; eend# R0 X' b1 x( a* A2 w
    diff_nsfmn1 = abs(hilbert(diff_nsfm1));   %hilbert变换,求绝对值得到瞬时幅度(包络检波)
    7 N/ _; N5 x6 o. r; r/ yzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    2 O( |1 X8 \5 |9 Z  d8 J4 `diff_nsfmn1=diff_nsfmn1-zero;
    + [( Q9 @( L0 H- vsubplot(3,1,2);
    " I5 w: f/ c' p8 Q' m' Fplot(1:length(diff_nsfm),diff_nsfm);      %绘制含小信噪比高斯白噪声已调信号的时域图
    9 v1 W! n3 A' N7 hxlabel('时间t');
    0 w% E6 p/ _: D% \2 U  _7 ]! E( H) z. Utitle('含小信噪比高斯白噪声已调信号的时域图');
      r' X  c+ C# w" f, x' ]. b9 hsubplot(3,1,3);                        %绘制含小信噪比高斯白噪声解调信号的时域图$ u' r4 a0 n0 s0 Y
    plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
    7 n$ E/ J  B" I9 Vxlabel('时间t');                          
    - Z0 ~9 V* U4 Z; V) f& Atitle('含小信噪比高斯白噪声解调信号的时域图');
    $ o0 ]& Y. `! d. h+ P1 A5 A1 ?$ h%*****************************************
    ! Y0 o7 d4 C7 z$ c4 b0 _disp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')( l2 k8 S: j% V, {" s* L
    pause3 S4 ]6 i1 S( M, K7 R
    %**************figure(5)******************" K, J" ~! B' D3 V' d
    figure(5)& n; @( ^; Y0 K! y% j( A( m
    subplot(3,1,1);plot(t,mt);                                   %绘制调制信号的时域图. M+ Y9 z3 e2 p5 V8 h2 l+ J
    xlabel('时间t');
    $ ]1 A' s% f5 R3 N. Rtitle('调制信号的时域图');
    5 D7 i9 w, y- r1 p: Sdb1=am^2/(2*(10^(sn2/10)));                   %计算对应的大信噪比高斯白躁声的方差" z5 K% p4 q) ?
    n1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声
    ) A8 e5 ?( R& F* n# rnsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通过信道传输)5 r* t1 u' j! _8 ?! F( p
    for i=1:length(t)-1                             %接受信号通过微分器处理
    8 r/ f( [/ H! q4 e  l+ ]0 z" I7 Z" N+ |    diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;! H3 ?& C: T/ N
    end. o  B3 D! o1 _0 r
    diff_nsfmn1 = abs(hilbert(diff_nsfm1));            %hilbert变换,求绝对值得到瞬时幅度(包, r  v  E# e) K9 D$ u
    %                      %络检波)
    3 z' g2 I! h- t+ f, X* `zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    + g  k3 T/ S  L) f* ldiff_nsfmn1=diff_nsfmn1-zero;' w, A! j, I) A, N& U2 Q+ R
    subplot(3,1,2);. r3 H" E2 b  z8 _2 }
    plot(1:length(diff_nsfm1),diff_nsfm1);             %绘制含大信噪比高斯白噪声已调信号$ J: R* c  j3 j6 a7 Q5 L
    %                      %的时域图
    6 b" I2 R0 R& {: X" r$ Gxlabel('时间t');
    $ u8 P; Q' }* p+ u% J4 j& j3 Ktitle('含大信噪比高斯白噪声已调信号的时域图');0 }. |. `9 `# z7 k' _0 J/ w
    subplot(3,1,3);                                %绘制含大信噪比高斯白噪声解调信号
    ( Z5 g: h' A7 W  |%                      %的时域图9 T, e  j$ k# s6 f* u) g0 m8 v7 z
    plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
    3 h( `8 N& n6 Q1 o* Pxlabel('时间t');                            , ^, r6 ~& y8 `! V. S
    title('含大信噪比高斯白噪声解调信号的时域图');
    ! k: R2 u7 {; r( r# h( @1 H) O%*****************************************
    - L- O; c0 _  H1 {! y1 k; Z%******************结 束*******************& `/ b, S" A5 S. R6 u+ t+ d
    & c! \$ _3 C& }5 N" e$ ~' x

    ) V9 `4 J+ L% s) z1 R& R7 y
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    李秋锐        

    14

    主题

    14

    听众

    76

    积分

    升级  74.74%

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

    [LV.4]偶尔看看III

    社区QQ达人

    1 d* r$ p7 r# L/ f6 `1 n3 h: G: w% `* [) i

    3 T9 g5 ?# W& R3 d" \3 [1 D0 p  C  x2 X3 `
    。。。。。。。。。。。。。。。
    9 ?8 U" z% m. M$ u) h. S7 R) q& X/ _4 j
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-7-31 03:37 , Processed in 0.423213 second(s), 57 queries .

    回顶部