QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2092|回复: 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调制解调系统.m1 w1 l' X, u( `/ E4 Y6 V
    %频率调制与解调的Matlab演示源程序
    ; N. b4 J$ K7 z* W3 h+ A%可以任意改原调制信号函数m(t)
    4 M3 A2 T2 M7 K: x, m& C%电子信息工程  杜怀超 091308305  
    6 T' u( m4 }- b! }4 X: ^%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·& ]/ ?+ n& S2 M; s$ k) K
    %*****************初始化******************
    - u+ Z" `2 X. u+ O' }echo   off      
    0 T1 n2 q% ]" R$ R: v8 cclose  all
    . u8 \! S! {3 ]- i7 x# }clear  all0 ^1 ^, s6 c9 O* P: U, S
    clc
    1 r3 d# R0 g9 v. G  Y2 T9 r% S" @%*****************************************' B. {+ p' R9 m" s+ M
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·/ Z: X2 ?% a$ _) N- {
    %****************FM调制*******************
    0 [/ [5 w- K/ I1 f5 Q% B. G/ Ldt=0.001;                                   %设定时间步长
    , P! C0 `1 x( [" k; W5 e8 H6 \9 Lt=0:dt:1.5;                                       %产生时间向量4 V% C3 \6 q: ]9 Z  _- |8 E
    am=5;                                      %设定调制信号幅度2 C* H+ i3 y" J$ \- i$ b: o
    fm=5;                                      %设定调制信号频率
    + v- S% q+ M8 ^5 ^$ @0 h: S' [mt=am*cos(2*pi*fm*t);                        %生成调制信号( u! Y. J* N, o
    fc=50;                                      %设定载波频率
    ( v6 _8 i+ e9 N0 N4 Yct=cos(2*pi*fc*t);                             %生成载波
    5 l1 K7 H2 R, \$ e& |* X% E, j0 rkf=10;                                      %设定调频指数
    : p  h2 @' n5 t# M9 u* o9 Zint_mt(1)=0;! d) G0 j# [( `
    for i=1:length(t)-1  
    ) {* k! m, i; F    int_mt(i+1)=int_mt(i)+mt(i)*dt;               %求信号m(t)的积分
    - [$ {; L- H, ?" Aend                                          %调制,产生已调信号
    ; F# B: g3 ?: D& _sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt);            %调制信号
    ' E5 c5 C+ y. W: f! M: F%*****************************************! }$ [- {) E) R0 T- ?
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·3 X9 S& v$ D. |# [3 M. S6 N* J4 f: Y* n
    %*************添加高斯白噪声**************
    , j! j7 k( u: X& x, Z( ssn1=10;                                     %设定信躁比(小信噪比)- \: s: r9 _! u5 ~5 l
    sn2=30;                                     %设定信躁比(大信噪比)6 \- B9 s  T1 K
    sn=0;                                       %设定信躁比(无信噪比)" R% N! b* \8 N! G
    db=am^2/(2*(10^(sn/10)));                     %计算对应的高斯白躁声的方差
    & @! }2 ~& n! b' b) [n=sqrt(db)*randn(size(t));                      %生成高斯白躁声- C' C" G. P+ Z) H8 q
    nsfm=n+sfm;                                %生成含高斯白躁声的已调信号(信号通
    9 j5 B1 V3 V2 ~" L: L! D! O%过信道传输)
    2 ~  a- y. K" D. q%*****************************************
    7 v7 T6 Y/ B' n%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·' d" v3 s/ E6 V/ C+ |. H
    %****************FM解调*******************- h- R1 x4 t% {4 G/ i
    for i=1:length(t)-1                             %接受信号通过微分器处理
    ! ]) @7 M4 F$ O- o2 A, u% `/ f5 `$ A    diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
    & `% v7 p6 c$ k/ ~' Oend6 _! r/ b! Y# m9 b+ R; A
    diff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)6 x- O4 l% L0 w- R
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;) e3 `( z: a9 }5 m  G. w, C
    diff_nsfmn1=diff_nsfmn-zero;# n( k- w( ~  `% S
    %*****************************************
    0 z, s; l# f/ ^3 v% A%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·$ W) }0 i, E8 z
    %**************时域到频域转换**************7 W  @; d. t5 W5 S" {/ y/ X8 K- {5 M
    ts=0.001;                                    %抽样间隔: f* }) v- ~$ n9 g" I. a! |
    fs=1/ts;                                      %抽样频率
    & g$ ~) U# @- g, u) A+ R% [6 ^5 vdf=0.25;                                     %所需的频率分辨率,用在求傅里叶变换
    # J7 I& T5 J7 c+ e+ |3 @8 y%                      时,它表示FFT的最小频率间隔) C( H+ l1 _- |$ ^) [# d+ M! k
    %*****对调制信号m(t)求傅里叶变换*****
    , o7 R+ d4 u  p3 L1 B1 c' _( }m=am*cos(2*pi*fm*t);                         %原调信号2 u, y# P* O$ I- U/ |$ X7 D
    fs=1/ts;8 P' Z9 Y& Q+ q4 k& k
    if nargin==2
    ' ]6 ]8 d) R! X1 s# w    n1=0;
    2 o7 N* h+ @  Q5 r1 t! u* O4 Celse
    : W5 R' |8 p+ S2 Y3 Y    n1=fs/df;5 T+ P6 @6 W' I( j5 i
    end8 j3 \8 H% K5 z% P
    n2=length(m);, r* @" x+ P/ a) T/ Y! a
    n=2^(max(nextpow2(n1),nextpow2(n2)));
    2 q+ G) `2 X' z- R: gM=fft(m,n);
    $ f- B2 ^" f( ]8 j% H* v5 Ym=[m,zeros(1,n-n2)];. `( s( J$ l( n: G' G8 x( j' O
    df1=fs/n;                                   %以上程序是对调制后的信号u求傅里变换
    0 F' V2 G( N/ ]) p% |M=M/fs;                                   %缩放,便于在频铺图上整体观察
    & s4 |1 ^+ [% k8 Rf=[0:df1:df1*(length(m)-1)]-fs/2;                %时间向量对应的频率向量/ |, L$ y" U2 ^7 W

    / r4 `6 W# I6 D7 n3 [%************对已调信号u求傅里变换**********
    ( G8 g6 Z6 u* sfs=1/ts;
    4 l8 @* u! N# Xif nargin==2/ F. ?7 _. h8 l' r
        n1=0;
    - u8 k- T) C/ L! J3 felse* |1 x) p: Q  N$ U; V
        n1=fs/df;. H) v) E2 z2 Z4 |$ s7 N$ j
    end
    & L2 l) i& j% Z. l' jn2=length(sfm);
    " g  T; S4 e5 T+ sn=2^(max(nextpow2(n1),nextpow2(n2)));
    ( ~' [0 a+ R6 k1 pU=fft(sfm,n);
    ; ?, _7 E- Z7 z) h) Tu=[sfm,zeros(1,n-n2)];; x; C( _  }( g1 @2 Z( _/ E
    df1=fs/n;                                   %以上是对已调信号u求傅里变换" q' Z+ b  ?$ `4 ~( _$ H  g
    U=U/fs;                                    %缩放
    7 c- c- j" I; g% Z* b) @8 j%******************************************" [1 z4 D* t2 d5 d6 C$ v
    %*****************************************9 A' E: b- {$ b5 M! V: \% H
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    ( F4 u7 X2 S5 V" @%***************显示程序******************
    ) T7 p" H% ~: K8 ~3 Sdisp('按任意键可以看到原调制信号、载波信号和已调信号的曲线'): f; E, n( j  h- k- V8 ~4 o& @0 R' o
    pause
    5 y1 n1 N2 C8 G+ ^0 L%**************figure(1)******************
    3 z: W  \. Z7 N! H/ A' p% Yfigure(1)/ ^, f4 r0 ~+ }8 L% _0 `
    subplot(3,1,1);plot(t,mt);                                 %绘制调制信号的时域图
    ' R9 N3 Y# S: y% e5 A0 c5 @* N2 Kxlabel('时间t');6 {) J3 ~9 e% ~# K" U/ I7 l# y
    title('调制信号的时域图');
    , U  ^! l- U, I+ A( E& ~* [* n: Osubplot(3,1,2);plot(t,ct);                               %绘制载波的时域图( p9 c6 s; q: ~
    xlabel('时间t');+ G4 X' v# b# k% i$ g8 W
    title('载波的时域图');
    - r& [0 S8 a  [7 ]$ r% ~  bsubplot(3,1,3);
    ! [; U6 V. b9 `9 v8 I+ g- aplot(t,sfm);                                                  %绘制已调信号的时域图
    - }# Z; @/ K' E! P  txlabel('时间t');8 w3 x: `+ u) ?
    title('已调信号的时域图');
    9 g/ ~$ e/ F) t! s0 d%******************************************1 q7 u# ~% ~6 Q7 h# y  ^
    disp('按任意键可以看到原调制信号和已调信号在频域内的图形')
    4 I" V" g, Q+ i9 tpause
    " C( V6 Z/ P* Z; j/ K%************figure(2)*********************+ I) x" r5 A/ J8 @  L
    figure(2)
    . p$ ^' b* V) C5 msubplot(2,1,1)6 o$ S7 n2 ?/ h" J  g
    plot(f,abs(fftshift(M)))                        %fftshift:将FFT中的DC分量移到频谱中心; ]2 q: d7 H7 ^
    xlabel('频率f')- c2 ~. ^9 M1 @- G. `6 j
    title('原调制信号的频谱图')
    " L9 B+ Y4 I9 C& W) @subplot(2,1,2)% ?. p8 g( X2 ~) [9 P' M
    plot(f,abs(fftshift(U)))
    - h  p3 g% y% j0 v; B, _' Q0 Hxlabel('频率f')4 D1 t& `) b) \4 o  g8 g
    title('已调信号的频谱图')1 }/ _( z. t7 v) c2 K. B
    %******************************************% K% J0 n' w5 {' V/ H# R
    disp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')
    : ]& C& {5 z& a* t6 Z2 O& qpause
    ( e+ }6 I* ^( w" B: c%**************figure(3)******************
    / w! `: P) Y) H4 R4 v$ D7 w& Nfigure(3)
      c, }/ K' V8 E$ T* Qsubplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图# R) _% |( Y% L3 w
    xlabel('时间t');
    - m& W7 r  L- e8 D, s8 c6 Wtitle('调制信号的时域图');5 g) x" m/ @( o7 c
    subplot(3,1,2);plot(t,sfm);                              %绘制已调信号的时域图* Y7 x/ n5 R' K8 ]
    xlabel('时间t');
    / [  d2 ]1 n3 ~2 a. Y" T6 V* z4 Dtitle('无噪声条件下已调信号的时域图');( n7 _5 e" s* x, s4 o, e8 p
    nsfm=sfm;                              $ A, P6 q5 P; I( L' j6 R6 b0 s0 m3 v
    for i=1:length(t)-1                           %接受信号通过微分器处理. I6 d! F6 T2 [3 l
        diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;! f2 O. Q5 i9 `# k
    end
    ' E" h% I9 |8 rdiff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)3 {% e& w1 B# N3 p( Y5 G; r
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    : h8 ?' s2 m& y2 V# ^# s* odiff_nsfmn1=diff_nsfmn-zero;. g/ F# ]  f/ f7 w3 ]$ I" s
    subplot(3,1,3);                             %绘制无噪声条件下解调信号的时域图
    " ?( O; D$ [" R& [" ]( X. s/ v$ j3 uplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
    ( }# `7 {( B# W6 _xlabel('时间t');                          
    0 ~7 M6 I( n/ D0 U$ ptitle('无噪声条件下解调信号的时域图');+ T, j+ A" r0 t2 @- F! u% E
    %*****************************************2 ]; `. b8 _; r
    disp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')9 B! Z) s9 e' u$ v' j
    pause
    2 |: _% B4 C6 Y  l0 @3 ?* j; f+ l%**************figure(4)******************! j; `9 k+ i/ `+ ?0 t# c( m2 l
    figure(4)
    4 D7 r, ~5 A0 j5 zsubplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图) m1 F' Z$ I, ?$ O5 C5 E$ L: h2 Q
    xlabel('时间t');
    - S% E, ^: V! T. E* ?. g5 K; ltitle('调制信号的时域图');( m* y9 J( C8 `; T3 G
    db1=am^2/(2*(10^(sn1/10)));                   %计算对应的小信噪比高斯白躁声的方差8 X( b6 ~. P4 c# ?% b# s4 a
    n1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声
    ( V/ S! ^: |. Lnsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通3 W5 M# y" F" J8 \
    %                      %过信道传输)
    9 N2 F  x% ^. e: G$ e, Zfor i=1:length(t)-1                            %接受信号通过微分器处理, n( F4 d5 `+ A2 A
        diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;7 x& k, ^, B; J% _( y
    end
    1 X( y4 x! p! e, \* `. mdiff_nsfmn1 = abs(hilbert(diff_nsfm1));   %hilbert变换,求绝对值得到瞬时幅度(包络检波)
    ( m3 n9 w& R' @2 b0 f- nzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;, M, i2 K3 y; f4 R5 w5 U( k! T
    diff_nsfmn1=diff_nsfmn1-zero;; w$ A; }; D4 ^
    subplot(3,1,2);
    $ N6 G0 I7 ]8 Q( \plot(1:length(diff_nsfm),diff_nsfm);      %绘制含小信噪比高斯白噪声已调信号的时域图
    / w& p, h" |. A+ h6 ~- P* g9 Jxlabel('时间t');
    " r. C8 p! g" f/ _title('含小信噪比高斯白噪声已调信号的时域图');
    . L$ G& F! P4 hsubplot(3,1,3);                        %绘制含小信噪比高斯白噪声解调信号的时域图
    % a6 U8 E2 e( [; g, H- cplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
    " b$ A/ ?4 {) ^8 e6 M8 R2 J6 Mxlabel('时间t');                          ; L$ B% S! k- d) }- A6 _
    title('含小信噪比高斯白噪声解调信号的时域图');
    7 e3 G0 q5 Q/ T# `, \0 D%*****************************************, v2 O/ G( L6 ?
    disp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')/ C  p1 `0 J! N* p
    pause
    0 ?4 U7 x6 Z+ n: ]1 {%**************figure(5)******************: R4 i9 I2 W3 @
    figure(5)
    ; E- J7 {9 M: T8 f% F* q  [subplot(3,1,1);plot(t,mt);                                   %绘制调制信号的时域图
    ; g  t( ?2 s/ Zxlabel('时间t');
    ) `  F0 ^& b( ntitle('调制信号的时域图');3 D1 h, i4 Q1 q/ E7 o, _6 }) T
    db1=am^2/(2*(10^(sn2/10)));                   %计算对应的大信噪比高斯白躁声的方差, a0 O) u0 O" i3 i0 o3 `- S
    n1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声
    4 L$ K" X, D7 u7 Tnsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通过信道传输)6 h" I" h/ R  K$ N( j& @& O2 M0 S! l
    for i=1:length(t)-1                             %接受信号通过微分器处理& C5 P# Z, e) M6 P5 i0 N, d1 @' I" S! L
        diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;6 p7 v: b! o$ u: o
    end
    & g: j0 d' {! y1 g" c5 J1 Odiff_nsfmn1 = abs(hilbert(diff_nsfm1));            %hilbert变换,求绝对值得到瞬时幅度(包( z9 W9 s' j0 ^
    %                      %络检波)6 K0 B" |- V" ?9 K: B1 C4 f
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    9 K4 `8 }/ B& C! U% @' Fdiff_nsfmn1=diff_nsfmn1-zero;
    8 u/ u+ C9 F6 H: g: asubplot(3,1,2);
    # f. g' w2 N) @4 A# Bplot(1:length(diff_nsfm1),diff_nsfm1);             %绘制含大信噪比高斯白噪声已调信号
    . `$ |1 _  H8 X%                      %的时域图4 w! c8 f) c: e7 @5 ?3 m
    xlabel('时间t');
    3 h! q9 x, |, \8 ~title('含大信噪比高斯白噪声已调信号的时域图');
    1 X8 O& C2 U; U6 e4 w" qsubplot(3,1,3);                                %绘制含大信噪比高斯白噪声解调信号+ T# v  R8 x& F" ^. c
    %                      %的时域图
    0 X, v' c6 ?: P4 k$ K7 D5 a  S2 B# _: Eplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');& _7 K5 ]& v9 f- f6 A
    xlabel('时间t');                           
    $ ^, S( B# @: P. i$ V* z9 A  Ztitle('含大信噪比高斯白噪声解调信号的时域图');# b$ r: C$ y& k4 s; x
    %*****************************************- t! v3 @' E' c9 {$ c2 d. {3 Z
    %******************结 束*******************
    9 [5 F) }6 F( R- `1 Q) u. S# C% C* }9 S1 b$ b# t7 ]6 B1 p
    ( V$ Q1 B  Q  e( h" t
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    李秋锐        

    14

    主题

    14

    听众

    76

    积分

    升级  74.74%

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

    [LV.4]偶尔看看III

    社区QQ达人

    6 d7 F" T% T+ c& U+ @- \8 L8 Q# [

    : N: \$ ^7 j! e+ c$ b% L7 Q# ?& @# k( ]; V3 i2 o
    。。。。。。。。。。。。。。。
    ( O5 E2 u/ s/ }6 y: r& u) |3 j
    " e3 W( j( P2 I2 C7 x9 W' Q" C7 R
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-4-14 12:47 , Processed in 0.650796 second(s), 59 queries .

    回顶部