QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2238|回复: 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
    / }2 ^/ U0 f/ b& c& c! [%频率调制与解调的Matlab演示源程序& C+ g6 R. E& ^; B+ i
    %可以任意改原调制信号函数m(t)5 t3 ^2 Z. o& o. M" j
    %电子信息工程  杜怀超 091308305  - i! A( Z/ x+ n- ?3 Z
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
      {$ ~. b/ ~, |9 t%*****************初始化******************: o$ N, e* f; c+ a: j% f; G1 u8 D
    echo   off      
    0 Y/ M' y0 ?6 Qclose  all
    5 l4 J0 J# r; aclear  all
    2 ~, o( A% x6 G( {clc: N$ V0 l6 y: {! k, y4 S- I
    %*****************************************! w; e* ^$ G9 \+ o9 |
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·# C. M( h& s8 q, c
    %****************FM调制*******************
    - r9 ~+ m/ O' Z6 y& Q/ k+ cdt=0.001;                                   %设定时间步长8 b$ m: x1 H' `! W3 Y1 |
    t=0:dt:1.5;                                       %产生时间向量- p; |" m3 d/ [$ i# W
    am=5;                                      %设定调制信号幅度
    - O- I9 |* U) ]  y2 mfm=5;                                      %设定调制信号频率6 `" j5 B! b! l  E
    mt=am*cos(2*pi*fm*t);                        %生成调制信号# v5 }) q7 R5 a' B4 @7 u
    fc=50;                                      %设定载波频率! H4 L2 {9 P2 P! _
    ct=cos(2*pi*fc*t);                             %生成载波6 Q9 ~. k# n# ]- e& v
    kf=10;                                      %设定调频指数
    " U: P, Q& x: [* uint_mt(1)=0;
    7 w% X( l- v* d' f; \5 O" bfor i=1:length(t)-1  
    2 m' T  I% k. j/ z$ Q    int_mt(i+1)=int_mt(i)+mt(i)*dt;               %求信号m(t)的积分  b0 @; C; W; c5 g6 c# J" N
    end                                          %调制,产生已调信号+ a$ ?# l) v; r( U) F$ K
    sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt);            %调制信号
    4 J; r: P! |! p& N%*****************************************7 ~. ]' u& c' r
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    ; g  c" y) }, q! U$ @%*************添加高斯白噪声**************0 ^# M3 R, f8 N; U3 W
    sn1=10;                                     %设定信躁比(小信噪比)  I! `8 z, {" z" e' Y1 s
    sn2=30;                                     %设定信躁比(大信噪比)1 {* ^+ @. M3 Z; g
    sn=0;                                       %设定信躁比(无信噪比)
    " _% v) q& g) M8 Z# `* n! Jdb=am^2/(2*(10^(sn/10)));                     %计算对应的高斯白躁声的方差5 e4 H* \6 b- A% B* _; M
    n=sqrt(db)*randn(size(t));                      %生成高斯白躁声
    + ^. C; z5 ]4 P: s/ N7 ]: [nsfm=n+sfm;                                %生成含高斯白躁声的已调信号(信号通
    2 `' x( C8 r. W; E2 z; a# V%过信道传输)
    ( c% N' \2 Z! n- j9 h" l& U%*****************************************
    7 S1 S) W# u. k3 S3 S3 W%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·5 C! E. F# \! z6 l' A- K
    %****************FM解调*******************# k% ]4 l2 i$ m
    for i=1:length(t)-1                             %接受信号通过微分器处理0 I5 @& c* c+ c' O
        diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;$ y; V2 f% e/ i1 b0 z
    end
    3 _: C) K, m( |$ E0 Y2 R7 G$ O7 `diff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)
    1 b4 D1 V" i4 X; s& H4 ]7 azero=(max(diff_nsfmn)-min(diff_nsfmn))/2;2 g9 d; m2 ]1 m( @1 h1 O2 }- Z8 f: I
    diff_nsfmn1=diff_nsfmn-zero;9 B7 q9 Y; v% L0 `1 e
    %*****************************************9 E4 u  J: d- _1 d7 t
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    8 Y/ r) F6 |+ Q. T. j%**************时域到频域转换**************
    & S: `5 y6 X' `: Uts=0.001;                                    %抽样间隔2 U! H- E# D# m$ g2 I
    fs=1/ts;                                      %抽样频率' ?' |. U! @* r9 V: y
    df=0.25;                                     %所需的频率分辨率,用在求傅里叶变换
      t: h7 W; R9 P0 a- Q* {, m%                      时,它表示FFT的最小频率间隔
    . M; ]! C" t$ F! W%*****对调制信号m(t)求傅里叶变换*****
    3 @1 ?; ?  c" F9 y/ e( k% {9 pm=am*cos(2*pi*fm*t);                         %原调信号
    7 ]/ d% b1 w9 o+ \5 O, Z' v4 j, m% Pfs=1/ts;; o7 `% X* J! F  y. y
    if nargin==2
    * o  ~; l3 M* n9 j% ]    n1=0;
    9 L% o" ^2 [' m+ s% |  jelse7 {' d, i% ]7 e5 Z, H
        n1=fs/df;* O' D5 P! X6 _$ G8 g
    end- E9 H5 O, ]' Y" a8 \0 E
    n2=length(m);
    5 s- `' ~' C# d# I# G+ n7 k4 ]n=2^(max(nextpow2(n1),nextpow2(n2)));8 {* a( @) U) d* s
    M=fft(m,n);
    ! p) E* d1 _* n4 o7 e* n% ?0 c# r; }m=[m,zeros(1,n-n2)];2 S3 I3 Z' ?9 b" x
    df1=fs/n;                                   %以上程序是对调制后的信号u求傅里变换8 P4 c* z' p( x5 C# h* a: w! d
    M=M/fs;                                   %缩放,便于在频铺图上整体观察. P0 Z/ g( F% X8 T6 a- _
    f=[0:df1:df1*(length(m)-1)]-fs/2;                %时间向量对应的频率向量
    2 h/ e$ k3 o5 B4 e2 c! Q' o" ^& I# c, q2 `. t! I
    %************对已调信号u求傅里变换**********5 W$ J; a: s1 A$ u- h
    fs=1/ts;" m! S% Z  `! @1 e9 l
    if nargin==2+ S4 g+ N4 N2 E& c( y
        n1=0;2 B$ y7 e$ q  ~7 Y  W/ Q
    else
    7 N6 R; e, G5 `$ |9 S    n1=fs/df;2 Q1 ~2 B4 B3 ]. k& O
    end& V& V6 @' @# ~$ Y; J
    n2=length(sfm);
    / D' i1 h  Y5 _1 A1 V% Wn=2^(max(nextpow2(n1),nextpow2(n2)));0 I7 a$ l* \, j- t3 I
    U=fft(sfm,n);
    * z0 @* V# e" A$ w% p+ \" ?. m; Cu=[sfm,zeros(1,n-n2)];
    - z8 V+ Q+ P  K# l+ edf1=fs/n;                                   %以上是对已调信号u求傅里变换
    2 f2 y2 f7 \" b7 QU=U/fs;                                    %缩放
    6 g# R' J4 R+ m& B%******************************************8 q' Q& D% [: Q3 ]1 W
    %*****************************************
    + E  m7 I( s5 r5 t( p%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·2 C4 D, y* E+ m( n: G% A
    %***************显示程序******************! q4 p, M5 G7 H$ i$ @% b6 c: ^
    disp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')0 }0 j7 o# N: _5 d) U' F
    pause
      W9 z/ Y4 J. E. Y2 A%**************figure(1)******************" N) s2 u4 p' r3 P8 l" o
    figure(1)
    * h  U# I$ n% R$ |6 Asubplot(3,1,1);plot(t,mt);                                 %绘制调制信号的时域图
    ' D+ ^! `2 O" F9 g3 ?8 n- zxlabel('时间t');& I0 x! }; q! p; f  g8 |# O
    title('调制信号的时域图');  k( ^, y! `) s9 x
    subplot(3,1,2);plot(t,ct);                               %绘制载波的时域图
    : p6 J/ ?5 j% C5 ]: x& R% V( Uxlabel('时间t');
    # s: Z4 y0 k$ t9 ftitle('载波的时域图');) |) |) ]# |  b- J# {
    subplot(3,1,3);
    1 `$ v% U+ P) I0 m6 d4 N* bplot(t,sfm);                                                  %绘制已调信号的时域图" ]  y- l, b- k) y& y
    xlabel('时间t');: m8 b4 R, q% i% L# F& ?6 i$ }
    title('已调信号的时域图');
    / z. {" `. n' C%******************************************
    , v, {- S; v7 q/ b, ldisp('按任意键可以看到原调制信号和已调信号在频域内的图形')
    1 p5 I& `6 x9 e, l4 O2 a: X7 @pause
    # V9 p8 s3 y! t1 w2 J; `6 n%************figure(2)*********************$ v' a$ {( G9 v  W+ V
    figure(2)
    , e) o8 R4 a+ isubplot(2,1,1)
    ' k- y) ]: G" G1 y" Wplot(f,abs(fftshift(M)))                        %fftshift:将FFT中的DC分量移到频谱中心7 s9 ^! x  i: @- h. o7 T1 L. t
    xlabel('频率f')
    ' O3 p4 N  L6 j# C+ y% a0 ~title('原调制信号的频谱图')( n7 k* x1 t2 k# {# |( e  t! l- k
    subplot(2,1,2)
    7 D; _% y) ~  Yplot(f,abs(fftshift(U)))
    & q" N) k6 `  A5 `- |xlabel('频率f')
    2 o0 w4 P& t7 ~  n' x5 E. Atitle('已调信号的频谱图')  m4 e; k$ u2 W, t4 m# [8 c/ P! g
    %******************************************
    ' e# {* J" R* \; z9 K* Pdisp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')% I$ G4 k6 M) Y1 K& L
    pause# ]8 f- B9 b0 l6 u/ ?$ J; Q
    %**************figure(3)******************
    7 N" k( N; X) H6 `figure(3)
    0 D! i  p  N0 A1 T- |, a, ksubplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图* c, R+ K( ?5 K3 m0 y
    xlabel('时间t');
      O) u( C7 h3 i) R! ?title('调制信号的时域图');
    : s: x; e* C1 v0 R9 ksubplot(3,1,2);plot(t,sfm);                              %绘制已调信号的时域图9 l+ U; c  x$ N7 I6 z
    xlabel('时间t');  |- u# [* U, r: t7 ^) R6 _% C) Q
    title('无噪声条件下已调信号的时域图');- s1 m$ C3 y; ?  o' q+ f6 q# S4 {% |( h
    nsfm=sfm;                              
    ( ]! ?* t& F. P1 X8 c  Afor i=1:length(t)-1                           %接受信号通过微分器处理
    " x+ ]% a; h+ S% f& c    diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
    * R' @/ x% r0 w: g' Z. C" E; G. n7 Bend% r9 `9 Q* o8 e' w' ^" t
    diff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波), ]# B: R9 X( r
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;1 k2 d. d+ g$ s2 f$ x0 k% B" A
    diff_nsfmn1=diff_nsfmn-zero;4 [% F8 j5 P- Z! d
    subplot(3,1,3);                             %绘制无噪声条件下解调信号的时域图- T9 I; v! x& m# X
    plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');9 I: t! ^5 _  Y( @4 ~# m
    xlabel('时间t');                          
    # g7 f. `  V2 W2 ?. J8 c7 Jtitle('无噪声条件下解调信号的时域图');
    ( g( g: z' e2 M$ ]# M8 t! d9 L  C7 o* j%*****************************************0 b3 z* T; M9 K& i9 W/ W0 E6 C
    disp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')% a6 W# W% }4 H! i* H9 @( N
    pause* S, M6 d! F" t: g: `
    %**************figure(4)******************. D9 w. l& j9 i* A1 T5 [- M2 f/ B
    figure(4)
    " o) ^6 b5 K( G. }0 A3 T. _! k6 xsubplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图
    $ Z' L- d9 C1 ^  X1 ?1 @' gxlabel('时间t');
    " A0 W" l4 I% `' Q7 s, Rtitle('调制信号的时域图');
    0 o; B9 j; `' N& u7 kdb1=am^2/(2*(10^(sn1/10)));                   %计算对应的小信噪比高斯白躁声的方差
    . V; Y6 \& Z( }4 N0 q( _n1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声( t& o% |7 Y7 `. v
    nsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通  c2 h5 g% [" ~4 Z+ f
    %                      %过信道传输)
    # M) c! l+ j: P7 u# c0 Gfor i=1:length(t)-1                            %接受信号通过微分器处理
    / B4 S- y; }) \    diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
    7 [: c8 W" A# q8 p  ], S# Eend  g" q1 j5 ~* B3 W
    diff_nsfmn1 = abs(hilbert(diff_nsfm1));   %hilbert变换,求绝对值得到瞬时幅度(包络检波): _) b. M( k! N/ H/ G
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    9 F" G8 I5 m$ p' F/ I: Q) ~- hdiff_nsfmn1=diff_nsfmn1-zero;
    . n# X: [/ X, j3 u5 R8 fsubplot(3,1,2);
    8 V8 R. ]  Z9 N0 L+ Uplot(1:length(diff_nsfm),diff_nsfm);      %绘制含小信噪比高斯白噪声已调信号的时域图
    % y: i9 b8 {( pxlabel('时间t');% H- i) J6 D8 i
    title('含小信噪比高斯白噪声已调信号的时域图');2 V) Q% {; ~+ j+ L
    subplot(3,1,3);                        %绘制含小信噪比高斯白噪声解调信号的时域图; A- J$ x$ G# ~$ m
    plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');' _& @3 F9 h- y/ n2 D5 l
    xlabel('时间t');                          0 }1 Q) I' u' P5 Q/ Z
    title('含小信噪比高斯白噪声解调信号的时域图');- I! b7 {% @1 A
    %*****************************************
    * ]( H. N9 Y6 ?4 k+ A9 N  W  Kdisp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
    , |  |+ L9 g, L( r; spause
    2 k0 ^; Q0 A, a7 m) h- J+ B%**************figure(5)******************
    5 m! B2 t- m. C: B  wfigure(5)
    % E! h% }, `6 d. Hsubplot(3,1,1);plot(t,mt);                                   %绘制调制信号的时域图
    4 N' t, D3 G1 L# axlabel('时间t');
    7 l  \8 H/ W- i$ Dtitle('调制信号的时域图');# P0 t% }! p5 g3 s4 J6 c9 c
    db1=am^2/(2*(10^(sn2/10)));                   %计算对应的大信噪比高斯白躁声的方差2 J: ?5 Y1 D) s0 `6 K1 E/ `- r
    n1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声) I! U1 E+ W: v) Q, a1 o6 w
    nsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通过信道传输)
    1 v- v6 q5 b- Wfor i=1:length(t)-1                             %接受信号通过微分器处理
    9 Y4 e- y) x9 \5 W    diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
    . p7 h/ N. J$ H$ }end
    # I# v8 [( ~* ~* udiff_nsfmn1 = abs(hilbert(diff_nsfm1));            %hilbert变换,求绝对值得到瞬时幅度(包8 c4 w4 Z0 y) ]
    %                      %络检波)
    2 Q8 F3 f, u  K7 czero=(max(diff_nsfmn)-min(diff_nsfmn))/2;6 q, g6 s& F4 |* @6 f
    diff_nsfmn1=diff_nsfmn1-zero;! U' G+ Y  ?5 {2 `: G
    subplot(3,1,2);$ U$ {3 O* t9 t1 t$ t8 B
    plot(1:length(diff_nsfm1),diff_nsfm1);             %绘制含大信噪比高斯白噪声已调信号! b, c. B+ R( y: F; G7 ]9 ^4 E
    %                      %的时域图
    , R6 x, U8 O8 ixlabel('时间t');
    0 x# r$ T' X( P- F- X) htitle('含大信噪比高斯白噪声已调信号的时域图');! D# \2 I% m5 m; `1 V) ?
    subplot(3,1,3);                                %绘制含大信噪比高斯白噪声解调信号
    " S' e  w+ [6 k2 q2 q. x, f, h%                      %的时域图+ ~+ W) V0 O+ D* [* ^
    plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
    ; e) K3 I; ^0 ~% _0 yxlabel('时间t');                            : b5 `) n" n' w
    title('含大信噪比高斯白噪声解调信号的时域图');, s. k2 ?: Z4 E5 M' i; Q
    %*****************************************
    $ I0 F. Y) j# ~4 P0 h7 M%******************结 束*******************; m' ?, V6 X6 J" }+ f% e
    ' W2 e+ x: z" J* ]! I

    9 `( b+ x) \  {& A
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    李秋锐        

    14

    主题

    14

    听众

    76

    积分

    升级  74.74%

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

    [LV.4]偶尔看看III

    社区QQ达人


    8 j0 N5 a( B6 ]( Q& h
    8 r" e( Q/ m7 a/ ~; h4 t$ @1 B% X' F  o/ r) t+ {  w' E
    。。。。。。。。。。。。。。。: t( w1 g5 O& _% ]1 {2 O  j' _8 G
    % l$ {  m: p3 I9 ]7 w0 ^' W  O
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-10-9 02:34 , Processed in 0.438734 second(s), 59 queries .

    回顶部