QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2241|回复: 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# w! p/ W4 ?9 Y/ {8 @
    %频率调制与解调的Matlab演示源程序% F$ l1 s) _6 @: O
    %可以任意改原调制信号函数m(t)
    : z) H- k5 a, r" \% S5 s%电子信息工程  杜怀超 091308305  # d! ?' C( A* h. c: }
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    6 A$ o# n. }7 _%*****************初始化******************) l1 H6 D! I, N6 j6 \5 M
    echo   off      
      {* p( F  L: y* O( H) H9 \close  all2 m* @7 @7 B/ v3 E. N5 [/ ?
    clear  all
    , E. n6 S$ b" Pclc( r6 V5 L9 I. I1 f& X. u8 A
    %*****************************************
    2 ^8 |$ u' S% x# d( O/ i: `%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·5 m+ l6 o5 D. Z. X2 f! s+ Z+ @5 P
    %****************FM调制*******************
    - z: e  ]( V3 g- q/ ndt=0.001;                                   %设定时间步长; ~: G  l, Y5 b; s
    t=0:dt:1.5;                                       %产生时间向量6 Q! |5 ~) o5 D) `
    am=5;                                      %设定调制信号幅度7 i& P6 Q# o0 T! e9 I1 `! ^
    fm=5;                                      %设定调制信号频率
    & g; r8 C; v$ `$ f) _mt=am*cos(2*pi*fm*t);                        %生成调制信号0 E% R8 a6 o7 a5 Q
    fc=50;                                      %设定载波频率6 C5 N( G4 O% ?
    ct=cos(2*pi*fc*t);                             %生成载波
    % w  A) \$ {2 Pkf=10;                                      %设定调频指数$ t5 s4 Z5 j4 s8 W' v
    int_mt(1)=0;
      C: j2 O! O9 Sfor i=1:length(t)-1  + x; y& M1 {& ~5 q, N3 ^4 }
        int_mt(i+1)=int_mt(i)+mt(i)*dt;               %求信号m(t)的积分
    , E0 T7 y& Q- \) T. S/ M; g- J% lend                                          %调制,产生已调信号) n5 r- w: S0 |: d
    sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt);            %调制信号) e5 ]4 p: e: t/ o+ q
    %*****************************************! j6 E# @" I% y
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    * y) p& i0 q: C" z- w# B/ n%*************添加高斯白噪声**************
    & w8 \  W! S- o6 N2 usn1=10;                                     %设定信躁比(小信噪比)
    1 U2 c, f) x2 |$ G& K) V( }sn2=30;                                     %设定信躁比(大信噪比)
    ! P2 T6 T3 {# t5 O" Xsn=0;                                       %设定信躁比(无信噪比)3 Y* L! T1 {4 Z+ @! ~: W+ S/ F
    db=am^2/(2*(10^(sn/10)));                     %计算对应的高斯白躁声的方差
    $ o  f' v4 P- s, Cn=sqrt(db)*randn(size(t));                      %生成高斯白躁声
    0 O( s$ Y) N, d" pnsfm=n+sfm;                                %生成含高斯白躁声的已调信号(信号通
    7 ~4 f4 q" P6 W+ G! n%过信道传输)
    - d' T' v  `) j& V$ B%*****************************************
    & h/ b, z8 _! {8 S%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    , g* B  a! C% c%****************FM解调*******************; M0 G* ?* i+ z0 s# ?0 W* @( r
    for i=1:length(t)-1                             %接受信号通过微分器处理
    ' g# A- L3 m) U' t9 x9 f    diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;* x# k: v8 B3 A( j0 G& ?5 \
    end
    * y" {5 T8 z( J5 Y# m: V) ~; S/ Udiff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)
    / X: O* o' m5 K3 X/ Q7 S; q" Xzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    4 P* f9 u9 U% O) E/ |; sdiff_nsfmn1=diff_nsfmn-zero;+ J( v) u: u# ?  n6 q( @& a6 e: o
    %*****************************************
    8 f7 v) [3 \; v- M/ y7 E%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    , y: t1 O. x9 u%**************时域到频域转换**************
    & h4 V6 g4 G6 j5 |" B7 L4 t7 `ts=0.001;                                    %抽样间隔4 B' Q3 ~4 Q$ S  k3 E' l. @
    fs=1/ts;                                      %抽样频率: c0 [% e9 _5 {, Z1 R, Y# M
    df=0.25;                                     %所需的频率分辨率,用在求傅里叶变换
    . G$ d& ~, E* e' n+ @) T7 F- K5 w%                      时,它表示FFT的最小频率间隔
    ) T; X( e) c" d) `( d%*****对调制信号m(t)求傅里叶变换*****
    ' n; W) r; m9 K9 |1 }3 k7 i# vm=am*cos(2*pi*fm*t);                         %原调信号
    * }; x( N0 x1 v8 U, C: S0 ]5 J* X& mfs=1/ts;7 Q4 J1 P9 M4 o& c+ b. ?- i1 o
    if nargin==2- S. h* m9 G6 n; V) r
        n1=0;
    9 j" V: {( y6 a' U. s8 u: g) nelse# p$ g( J* O1 A: Z
        n1=fs/df;
    / u* I+ G& w. T6 [; {2 zend# l" i( q( M/ y: o
    n2=length(m);
    : n3 k4 ]# z, s7 ]n=2^(max(nextpow2(n1),nextpow2(n2)));
    # i" g/ Y- G: w* {: j  U- UM=fft(m,n);5 p; ]3 Z  z( F/ m: v5 m- [
    m=[m,zeros(1,n-n2)];
    # f; L' l# z5 ddf1=fs/n;                                   %以上程序是对调制后的信号u求傅里变换
    2 N# |- e1 Y2 C/ }: `% \. U$ mM=M/fs;                                   %缩放,便于在频铺图上整体观察. ^* E. k: j5 y7 N
    f=[0:df1:df1*(length(m)-1)]-fs/2;                %时间向量对应的频率向量
    ( f5 v; ]& X& a+ l3 M; e8 v; Y+ ~3 i
    * w( U* E2 F9 l  x% J5 w" K/ ?%************对已调信号u求傅里变换**********
    / [# S' {2 W2 s6 l  yfs=1/ts;% x+ e2 E9 q+ o
    if nargin==2
    % w# p, v' v. q    n1=0;1 x! F% N- [" M! a. W8 @8 M/ _
    else
    + [" }  n( P3 P( [& _    n1=fs/df;3 z; K! k5 c/ U# E$ T/ {2 |
    end: @' D4 T- }8 R( h/ i4 p' w
    n2=length(sfm);/ c+ K; t6 C: q: Z3 j
    n=2^(max(nextpow2(n1),nextpow2(n2)));
    6 J2 o9 P4 ]3 G( {U=fft(sfm,n);
    ) S) N- x# o  Z5 v; l! l* r) Fu=[sfm,zeros(1,n-n2)];, w7 O$ a. Q# n7 D2 w
    df1=fs/n;                                   %以上是对已调信号u求傅里变换
    5 w  Y  k; d  g' \4 k: _U=U/fs;                                    %缩放" O4 ?9 W& u2 p* ~1 r2 g6 C
    %******************************************
    1 U/ B/ G. p( c) }%*****************************************  c9 n8 r$ e& H% Y8 l1 I5 Q
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
      s: n0 ^7 b  x5 a+ _$ S%***************显示程序******************
    3 h: ^" c( r+ c4 k: @disp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')
    9 b, X/ q5 d; v: vpause
    8 M( a  T5 b) O, f; z; i%**************figure(1)******************5 m+ M! Q% ?8 T' J+ j* V
    figure(1)0 b2 _9 m7 |) h& L. ~+ g* N
    subplot(3,1,1);plot(t,mt);                                 %绘制调制信号的时域图
    & c; j+ R4 N9 B4 U! u) {8 X( M; ^xlabel('时间t');
    + s/ }0 j; I# @! s# gtitle('调制信号的时域图');
    " ~- K; q+ t; o3 h: O$ ~8 F+ Asubplot(3,1,2);plot(t,ct);                               %绘制载波的时域图, U: ~6 e- y$ D! W. Z; n
    xlabel('时间t');
    6 x( H, f- j' o- A7 F7 l! |title('载波的时域图');
    / @, `! a& C5 X# Rsubplot(3,1,3);& V" T0 w; Z! G& D
    plot(t,sfm);                                                  %绘制已调信号的时域图
    . G5 H* ]6 _. a1 Zxlabel('时间t');
    + i4 v3 h: r( P5 Ztitle('已调信号的时域图');
    ( \5 P4 N- O- B# x5 p%******************************************
    * [+ A' R- m; ?! c6 B9 Ldisp('按任意键可以看到原调制信号和已调信号在频域内的图形')
    / M8 _4 _3 e/ G' vpause
    ( z, V- r( A; g%************figure(2)*********************
    / y+ L) I# ?7 t9 `figure(2)6 A2 K& V1 p1 y+ ?( t
    subplot(2,1,1)
    8 f- T- D0 g/ }& j' R* Aplot(f,abs(fftshift(M)))                        %fftshift:将FFT中的DC分量移到频谱中心3 g( X  w6 x' N+ v$ U7 {, y' [
    xlabel('频率f')7 O7 B2 X# E: _. o; I+ e, U; Z6 n
    title('原调制信号的频谱图')* t" P1 ]! N8 [, z9 ~
    subplot(2,1,2)9 h6 {  d" z# d" b7 V* F
    plot(f,abs(fftshift(U))); ]+ L2 @# @- t+ n
    xlabel('频率f')0 j$ T0 _; D( t( s+ W7 a- }( B+ n
    title('已调信号的频谱图')0 q1 O2 _6 A9 ]& ?
    %******************************************5 S9 X. B& u$ {: w, f
    disp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')
    0 c% q; R6 Y2 B" ^0 i" M8 Ppause
    7 c9 Y7 {. b" V7 m6 q$ O%**************figure(3)******************
    & ~4 F& w' Q/ f9 T+ X' Sfigure(3)' Y2 o( Q: Y6 V2 K4 G
    subplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图
    $ b1 {7 Z) |* Z+ _, p0 W- r( |% E& uxlabel('时间t');
    # x+ K1 M7 e. m3 h$ N: mtitle('调制信号的时域图');- l4 K; a) `* o, d0 y9 O! D, K
    subplot(3,1,2);plot(t,sfm);                              %绘制已调信号的时域图( G( e2 ?$ y* K& {
    xlabel('时间t');+ g( }  T6 x& f6 l
    title('无噪声条件下已调信号的时域图');
    5 N+ Z  S; S5 Q- N' [: f( Onsfm=sfm;                              
      S( r8 q2 X6 hfor i=1:length(t)-1                           %接受信号通过微分器处理9 ^4 _3 Y0 O+ {. k/ T  e
        diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
    ) c+ F$ C+ r( F5 P  v$ E' @end- a" F0 B$ x/ o% g5 _' O6 N
    diff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波). l1 q8 s3 W/ w/ Y+ ]
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;  e! t$ @4 q. V" a) ~$ \3 `) @
    diff_nsfmn1=diff_nsfmn-zero;
    # S7 @8 S3 ?, f! m* ?# ]' Gsubplot(3,1,3);                             %绘制无噪声条件下解调信号的时域图2 U. V1 M  A. ?8 Y! q5 D4 L
    plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
    $ e4 v  h4 d- `" W! L% \xlabel('时间t');                          
    0 Q& N6 C+ f8 [: xtitle('无噪声条件下解调信号的时域图');
    ! u+ V3 e) K) N, l%*****************************************+ T+ Q+ y- I2 m1 e
    disp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
    . O: E- G$ S9 S6 j* E1 Lpause% [' d2 C2 G6 c
    %**************figure(4)******************" U9 h( X# o6 F2 D+ E0 K0 g# Q4 _
    figure(4)/ C2 Y9 V+ h' [
    subplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图3 Y: X- G8 b0 V. N: v
    xlabel('时间t');
    ! l4 T3 ~- K  z3 U  Atitle('调制信号的时域图');
    " \' f& ]: V  X) Y. O# `( n( c( f5 {- Hdb1=am^2/(2*(10^(sn1/10)));                   %计算对应的小信噪比高斯白躁声的方差7 ?) p3 J6 S  v  m) g, U
    n1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声
    2 J/ r( g2 o# _9 g. Q- jnsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通
    # v4 W) U$ ^- C  e1 W" @% b%                      %过信道传输)  A$ i2 W- Y- b/ m6 [8 {" @
    for i=1:length(t)-1                            %接受信号通过微分器处理
    2 O* g+ D& n1 E: y9 p    diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;- P  d4 a. r! W. O* m
    end& @4 K6 f4 z9 G  \* `
    diff_nsfmn1 = abs(hilbert(diff_nsfm1));   %hilbert变换,求绝对值得到瞬时幅度(包络检波)2 \$ G; q5 U6 d/ y0 Z9 s
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    % ?8 }4 O2 `) O6 ddiff_nsfmn1=diff_nsfmn1-zero;: G' Z' U  o' T! h1 n& ?
    subplot(3,1,2);
    8 z! r& S& X$ R/ O) W: R5 ^7 \- iplot(1:length(diff_nsfm),diff_nsfm);      %绘制含小信噪比高斯白噪声已调信号的时域图+ N6 B& ^0 o# y* V) a' Q
    xlabel('时间t');
    2 e6 w6 N& v* O5 L. Ltitle('含小信噪比高斯白噪声已调信号的时域图');
    9 P8 G: ]; Q6 @8 V' |* Q) ssubplot(3,1,3);                        %绘制含小信噪比高斯白噪声解调信号的时域图6 C5 u/ T9 i0 {& {' I
    plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');2 Y; I0 @5 H1 D/ v! J
    xlabel('时间t');                          
    $ L2 ?2 O3 d$ r2 `7 q& ftitle('含小信噪比高斯白噪声解调信号的时域图');9 D/ F. h, d+ O4 l  B; l
    %*****************************************' b. d4 A- o6 B+ B, a
    disp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
    ! I/ N# v3 ]: g* a) B' upause, I$ [( B- a7 G7 I
    %**************figure(5)******************9 V; }- |3 X+ |! t9 H& p
    figure(5)
    4 |) L8 V6 q! E! \, [7 Csubplot(3,1,1);plot(t,mt);                                   %绘制调制信号的时域图6 C* T) }5 a6 D, {" \& l: ?
    xlabel('时间t');6 {: Q/ [& S* N1 x2 E
    title('调制信号的时域图');9 u) p& N( `2 s# I/ X1 h
    db1=am^2/(2*(10^(sn2/10)));                   %计算对应的大信噪比高斯白躁声的方差. O+ O8 D: E9 t) ^* h. w  b3 L
    n1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声
    ; a% m$ d" B6 e# K: n3 k1 Q4 Vnsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通过信道传输), V" P( z, ?6 G/ P+ q$ d  ]- T
    for i=1:length(t)-1                             %接受信号通过微分器处理
    9 x' J  [* ?4 O    diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;; x2 P" ^# a0 _
    end$ g, E% Z1 y5 y% d. |
    diff_nsfmn1 = abs(hilbert(diff_nsfm1));            %hilbert变换,求绝对值得到瞬时幅度(包
    # F0 Q) U  l3 x: u4 P7 a%                      %络检波)( M" `4 @# _4 x/ o2 u& P
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;' f4 t6 F$ q7 ~' A/ A$ ^
    diff_nsfmn1=diff_nsfmn1-zero;5 o. ?( g# |2 D( }, m# u5 J
    subplot(3,1,2);
      ]% h$ }! a5 s1 W3 g2 ]2 uplot(1:length(diff_nsfm1),diff_nsfm1);             %绘制含大信噪比高斯白噪声已调信号
    , ]! J0 b2 S, X& Z. G+ v. u# m/ |%                      %的时域图1 ?: `5 b+ E  a; _
    xlabel('时间t');8 v' Q; P1 h) S0 r; n9 O
    title('含大信噪比高斯白噪声已调信号的时域图');
    * ~, q) [% ^! l4 x7 m/ E+ _subplot(3,1,3);                                %绘制含大信噪比高斯白噪声解调信号
    8 P+ E1 n) b2 R5 _) e$ P; |, |$ d%                      %的时域图
    ; x+ o+ o4 ]. q1 R, p6 b/ W% Tplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');- z6 v' V* X/ q! v# B0 @
    xlabel('时间t');                            5 z! I; m; U& o; |
    title('含大信噪比高斯白噪声解调信号的时域图');1 O0 X& O1 f( U
    %*****************************************1 V. F: f1 [) p. v/ G" f9 p
    %******************结 束*******************
    9 n# I  c( x: _! |7 r4 R, Q2 o0 l3 R% a4 L4 l! q' U
    9 [$ _* E; L3 `* O) H
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    李秋锐        

    14

    主题

    14

    听众

    76

    积分

    升级  74.74%

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

    [LV.4]偶尔看看III

    社区QQ达人

    % p6 T) i. m: e

    & K( X  o/ W- R. @
    1 _" x; F1 z! r' d0 O+ e。。。。。。。。。。。。。。。
    2 H8 l4 z4 @" ~7 H0 k$ t1 G6 U; H- a4 @6 E- g. E
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-10-9 04:32 , Processed in 0.327983 second(s), 57 queries .

    回顶部