QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2095|回复: 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
    5 {' Y6 x/ f% L: b%频率调制与解调的Matlab演示源程序
    # }3 C) ^- Z- X4 H6 v" k1 H%可以任意改原调制信号函数m(t)7 Z( u0 l5 |! J6 u6 z; y  [6 s; C
    %电子信息工程  杜怀超 091308305  / ^8 f" s3 W$ F* [; q
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    " p; n$ }% X; J6 o- @1 G/ P$ g2 r%*****************初始化******************* N0 P: j3 X/ s2 m3 [/ J  }" z) V
    echo   off       : C1 X/ Q) V8 u" B, S( J$ Y
    close  all
    , M1 a4 ]- B: o9 Vclear  all; ?! v0 e/ R7 M2 W
    clc
    / v( A% G. g& |2 Z%*****************************************3 o& a# c/ |5 o) H9 M
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    & D3 \; Q( N: Z/ C1 Y( |%****************FM调制*******************
    4 b( z# }4 @5 x- x" Q. ldt=0.001;                                   %设定时间步长
    1 |; t1 A+ J) D5 v4 h- E7 I$ Lt=0:dt:1.5;                                       %产生时间向量3 W' X! I- j$ u1 \0 x& [
    am=5;                                      %设定调制信号幅度
    # ^7 h2 K1 _: ]! a  N; gfm=5;                                      %设定调制信号频率/ x) I- h7 s/ [' W/ s7 ?
    mt=am*cos(2*pi*fm*t);                        %生成调制信号; ]' v. j& P4 A2 ^: E% y! P' e
    fc=50;                                      %设定载波频率
    ) c. u8 I, r! `* P! zct=cos(2*pi*fc*t);                             %生成载波
    1 v  c0 E3 o( C% w! h! Mkf=10;                                      %设定调频指数
    : [0 D0 W& f3 p# A6 xint_mt(1)=0;/ v8 t( Q7 M! Y7 F
    for i=1:length(t)-1  
    7 X0 d1 o, ~; o0 T1 v- B    int_mt(i+1)=int_mt(i)+mt(i)*dt;               %求信号m(t)的积分3 {, Y- A) j7 o$ t
    end                                          %调制,产生已调信号  B" b/ V' G& a. F3 K% d
    sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt);            %调制信号" m: _" m- d: k. r: M3 O; I$ [
    %*****************************************
    ) R: o) b' N" n) ?0 M) _" ?/ O%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    % {) P- l/ }/ X%*************添加高斯白噪声**************
      U8 u# J/ e$ `+ V, n7 _' Msn1=10;                                     %设定信躁比(小信噪比)
    1 M- `: r- S! s) u, h; rsn2=30;                                     %设定信躁比(大信噪比)
    0 V! q/ m5 a+ L7 h% v" bsn=0;                                       %设定信躁比(无信噪比)
    . n% r9 F# {! D4 @7 F8 ^. ~$ h* Cdb=am^2/(2*(10^(sn/10)));                     %计算对应的高斯白躁声的方差# W' Q% V& S2 n! M2 V7 {) Q! {0 N
    n=sqrt(db)*randn(size(t));                      %生成高斯白躁声
    " @- m; z$ E: {* c) {9 I4 ^5 P% {% o9 ^nsfm=n+sfm;                                %生成含高斯白躁声的已调信号(信号通  [. {4 Q& t$ A4 a0 _+ ^
    %过信道传输)
    6 I, r, s) J; w# d- s; C2 Y%*****************************************1 k" q. i7 b" k* I( R; E5 ]
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    0 n' z/ g! K" I4 G/ d  Q: ~. v%****************FM解调*******************& O9 g* w% b6 \; d6 L& d
    for i=1:length(t)-1                             %接受信号通过微分器处理
    ) L5 F& R% k' C  ^6 s4 E; ^    diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
    4 T; K) b% D0 y, w0 p; qend
    4 H! U1 d  x0 `% S4 W. Cdiff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)
    7 {  J1 }& ?9 N" H$ |) f0 Tzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;5 Z# n$ z7 E. G! K  h8 k1 W
    diff_nsfmn1=diff_nsfmn-zero;
    ! G! H: V* }- g0 S4 a5 r%*****************************************9 K/ F  M; d! b3 ]9 c& `1 u3 W5 v
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    4 K; K- H2 ], R3 H6 B%**************时域到频域转换**************
    . S0 Q. F; o8 ?2 U, Y" e1 Xts=0.001;                                    %抽样间隔
    : w" \- H+ w  v8 @- T% Sfs=1/ts;                                      %抽样频率) t( n& j2 o/ o: s! V
    df=0.25;                                     %所需的频率分辨率,用在求傅里叶变换
    ' Y4 ~: c5 i9 C) c  O%                      时,它表示FFT的最小频率间隔/ y; w$ C: S; M8 p7 w) X
    %*****对调制信号m(t)求傅里叶变换*****( P+ X& A5 T+ r! b
    m=am*cos(2*pi*fm*t);                         %原调信号
    % ]4 L+ P4 I% t; ffs=1/ts;2 q- k; n- I+ L, u/ c
    if nargin==2
    ) U9 m1 [1 E) s: r3 o4 j    n1=0;
    7 B: j0 ~/ Y! c) ~1 ^% v4 Ielse
    1 L) @* `0 W" M    n1=fs/df;
    ) L1 @: M" |9 b. H7 w, C, Xend
    ' `& A  N- |% j  \# `4 ^n2=length(m);5 R, _1 x) k9 I
    n=2^(max(nextpow2(n1),nextpow2(n2)));! C4 [: U  T- `8 D* Y
    M=fft(m,n);! t6 C! T# ~' @
    m=[m,zeros(1,n-n2)];
    " @0 w0 G' }! ^6 w/ Q. ]% Cdf1=fs/n;                                   %以上程序是对调制后的信号u求傅里变换
    " k4 n  i" m2 @  @* S% }' v' ]M=M/fs;                                   %缩放,便于在频铺图上整体观察
    : H' n- _- U; Tf=[0:df1:df1*(length(m)-1)]-fs/2;                %时间向量对应的频率向量6 N9 R9 b2 y* \0 d6 c' p* o
    $ B- T& m' |  f  q1 @
    %************对已调信号u求傅里变换**********
    9 w8 Y& b! r6 d" M/ {5 ~9 Q/ r( dfs=1/ts;
    ) e! N- q: n) Uif nargin==2
    7 ~, `: Y, Y9 D& l, j    n1=0;
    ) k& v) s1 @4 {4 S' _2 ?else+ O) ^* P4 V  P  Y
        n1=fs/df;
    + P( h+ m0 B" a+ n2 Oend
    5 W' p4 l* O: M! cn2=length(sfm);8 y; R% b/ ^6 g; W
    n=2^(max(nextpow2(n1),nextpow2(n2)));$ J9 \( \$ P6 F$ B: i" ^
    U=fft(sfm,n);
    , H- r7 R# \' c5 M% }, g: ru=[sfm,zeros(1,n-n2)];$ c" t& }& Y' ]8 F
    df1=fs/n;                                   %以上是对已调信号u求傅里变换* Y5 d  f! w( L8 n5 c: _2 d
    U=U/fs;                                    %缩放) j2 E$ H9 }1 s  k: ?0 `+ a
    %******************************************
    ( }2 s1 ?% u. B1 x# f. p%*****************************************
    * K7 e: G; f# K+ U%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    5 d0 _5 T* F- g' F) W%***************显示程序******************
    9 k. T3 l! Z" Qdisp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')
    3 _6 K6 Y( l5 R) E0 qpause
    7 |; }' d0 l3 F5 ?%**************figure(1)******************
    * }1 @% g1 m( Xfigure(1)
    , O* B* B7 s- M  t7 ^; F  bsubplot(3,1,1);plot(t,mt);                                 %绘制调制信号的时域图
    * D$ }4 R0 z- k9 I/ [: Nxlabel('时间t');* s# B+ L7 S8 w* H' ?4 w
    title('调制信号的时域图');
    6 _/ t1 ]! @, i; u4 R' O% Osubplot(3,1,2);plot(t,ct);                               %绘制载波的时域图# Q- k* B* v$ X4 B2 d7 r. o. f
    xlabel('时间t');
    . S1 u" O2 C- x6 v2 a* stitle('载波的时域图');
    1 O+ S  G7 N. c* Ysubplot(3,1,3);* h( [( _/ n/ w: D" O
    plot(t,sfm);                                                  %绘制已调信号的时域图
    9 X* G& `0 X$ v4 [xlabel('时间t');$ ^4 D- O7 U6 g8 b$ B8 [- r! H
    title('已调信号的时域图');) p0 B6 j' Z( G' K) O4 x, l
    %******************************************
    $ Z; V4 z1 a: T0 Ndisp('按任意键可以看到原调制信号和已调信号在频域内的图形')! Y7 s7 a% l8 j
    pause
    2 ]& D& _6 ?; A3 Q( r- @%************figure(2)*********************( y% j8 |6 p* Y7 d
    figure(2)
    1 o" j/ \& V2 [" b) }) g2 M: Wsubplot(2,1,1)
    , [9 x% u# d5 J$ O( t' s. K) Dplot(f,abs(fftshift(M)))                        %fftshift:将FFT中的DC分量移到频谱中心
    . Q! S1 Y* b7 v, [& a9 b/ v0 Pxlabel('频率f')! b: q. |9 t) p& `8 s$ a
    title('原调制信号的频谱图')9 ]0 D$ L9 e2 [0 ?0 A
    subplot(2,1,2)
    4 U+ o/ }5 |7 [  a: Bplot(f,abs(fftshift(U)))
    3 Z- O) N; [9 Dxlabel('频率f')
    2 a$ ]- X% D; h% z' Ititle('已调信号的频谱图')
    9 K+ V! e0 s- c: b# i1 S%******************************************1 J: Q, J: D+ Y5 D5 i3 V$ ~9 c
    disp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')1 _  t0 O( `2 H; T" Y: l. x
    pause
    ! y+ [7 T+ M4 L. R4 K- x$ U%**************figure(3)******************/ q6 N5 J+ k; C- c; A
    figure(3)8 M' ]0 W$ J7 c3 \) T# V
    subplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图
    & p5 s% k7 M$ @xlabel('时间t');
    8 \. f9 C7 P1 ]: ?title('调制信号的时域图');& V2 ?6 e* K% b6 p3 u1 l: d2 U
    subplot(3,1,2);plot(t,sfm);                              %绘制已调信号的时域图( e! u- F: q# }5 [" Z% b
    xlabel('时间t');
    2 r  W) t& z' X# mtitle('无噪声条件下已调信号的时域图');
      J0 \9 M, W1 bnsfm=sfm;                              1 M0 a( D# t' `9 w
    for i=1:length(t)-1                           %接受信号通过微分器处理& w# p  K& R$ R$ X) `: f0 X. H
        diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
    4 w- `" H) T. o; y$ l; uend. F! P! u6 R- {. p& L* F+ O+ c+ o8 m
    diff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)5 ^! a2 P8 j, G+ ~) a* L/ k
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;/ d1 a+ l5 s3 s! c9 Y* x; o
    diff_nsfmn1=diff_nsfmn-zero;
    * a- ^: }6 J, ~- a& ysubplot(3,1,3);                             %绘制无噪声条件下解调信号的时域图9 ~" E; s' K& v2 H5 z, j
    plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');8 U- B& D6 v# `" t
    xlabel('时间t');                          
      r; ~8 ^: V6 S8 R# g  etitle('无噪声条件下解调信号的时域图');
    * i. W( t: c8 t( ], m%*****************************************% i; W2 c1 B: Z9 f, F" Q
    disp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
    9 |1 e& R5 O( u- fpause3 w9 k0 [0 N6 x  y" r; U
    %**************figure(4)******************4 F" j" z; `; l- A. z" b  D
    figure(4)8 W% G8 l' X. {) q7 N1 l: A
    subplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图
    - @; N7 r; c5 t* A- D) G* T5 Kxlabel('时间t');
    ( C' ?% H- b: n8 ptitle('调制信号的时域图');
    8 e' H! }- S5 c3 e# Ydb1=am^2/(2*(10^(sn1/10)));                   %计算对应的小信噪比高斯白躁声的方差6 |: }8 {- h( ?
    n1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声
    * y7 B9 d4 S& a% |. Dnsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通
    / d; `5 \5 D( [+ D, T) R%                      %过信道传输)  k5 P. |! ?) S1 v' I+ W
    for i=1:length(t)-1                            %接受信号通过微分器处理/ |+ |/ ]; t% Y- i7 E! i: W
        diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;! \  [2 A* [7 I+ v; @5 O
    end
    & @; s9 _# l4 j6 gdiff_nsfmn1 = abs(hilbert(diff_nsfm1));   %hilbert变换,求绝对值得到瞬时幅度(包络检波)
    : Y4 n7 P/ T3 R. A* H9 z. |zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    $ i( n' W7 \# s* F5 ~diff_nsfmn1=diff_nsfmn1-zero;
    , ~4 L0 l+ @7 [6 S2 J6 ssubplot(3,1,2);* {- r/ t* U, b3 ~5 k  L0 X# S: H; r
    plot(1:length(diff_nsfm),diff_nsfm);      %绘制含小信噪比高斯白噪声已调信号的时域图
    3 a) S7 X0 Q7 L4 nxlabel('时间t');, `# T! _8 f! K7 q2 d9 S6 X& y
    title('含小信噪比高斯白噪声已调信号的时域图');, Y$ i0 l* \% i$ y
    subplot(3,1,3);                        %绘制含小信噪比高斯白噪声解调信号的时域图
    " Q6 v2 o1 Z* K& uplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
    $ C; ]1 P& }7 Q0 D7 N  a7 @* xxlabel('时间t');                          ( [* a" L/ T# z6 R
    title('含小信噪比高斯白噪声解调信号的时域图');/ v* R- _1 j3 G- ~
    %*****************************************
    . r- g; ?! G; F0 {+ X! E) E5 odisp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
    ! @* m3 S& l) ?# v9 wpause
    . e! m/ o3 X2 X%**************figure(5)******************
    : P6 ]; s: X3 q$ ~/ Ufigure(5)
    0 x- @1 i. K, G; ~/ lsubplot(3,1,1);plot(t,mt);                                   %绘制调制信号的时域图
    " @# ^# [; b0 l7 }- xxlabel('时间t');8 W) n4 ?+ D, a0 g5 F) J
    title('调制信号的时域图');; q$ w/ \( F2 W  Z' _3 L
    db1=am^2/(2*(10^(sn2/10)));                   %计算对应的大信噪比高斯白躁声的方差
    - w0 M/ W0 ?, A; Q$ e, ?5 en1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声8 L5 \. b8 t: D/ f
    nsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通过信道传输)
    4 l' w  D6 ]* ?% A7 I9 r/ Vfor i=1:length(t)-1                             %接受信号通过微分器处理
    2 C" h3 H7 v' W0 u% D    diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;$ T" h( K* J0 Q2 |( P
    end
    9 ]$ C1 ^7 i, [, w( e0 v! B" P6 `6 |diff_nsfmn1 = abs(hilbert(diff_nsfm1));            %hilbert变换,求绝对值得到瞬时幅度(包& R- B5 j3 |6 A
    %                      %络检波)
    + P0 C+ Z5 d, r& F: S! zzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;5 Q9 `0 X$ g$ e
    diff_nsfmn1=diff_nsfmn1-zero;
    * A  z+ x/ i0 f' `7 f2 m" [* B8 ?( Bsubplot(3,1,2);
    $ h" w4 {) O( O( I2 r3 Xplot(1:length(diff_nsfm1),diff_nsfm1);             %绘制含大信噪比高斯白噪声已调信号4 t! a+ Z# t6 I+ [; R  D& h9 z
    %                      %的时域图
    : O$ o5 M4 D# c8 |2 W3 V1 ?$ B( sxlabel('时间t');0 [) [% R1 u& O! `" u" c8 C
    title('含大信噪比高斯白噪声已调信号的时域图');
    . ?" H) M: Y* A6 [subplot(3,1,3);                                %绘制含大信噪比高斯白噪声解调信号
    3 B6 E. r! f% T5 ~%                      %的时域图
    2 M8 v% A" Y( `# ?: R# |( rplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
    ! ]1 X- D# n( p3 [, B& Z# Dxlabel('时间t');                           
    3 ?* B2 O' v) k* A6 etitle('含大信噪比高斯白噪声解调信号的时域图');
    " {: s6 b8 ?. ^3 C# r! f%*****************************************
    5 X% v, o3 Y+ e# v%******************结 束*******************
    ( e# c6 g8 Y. `$ o+ {( d
    - X6 ^+ ?) M: i  ~7 r8 z) y  n8 H
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    李秋锐        

    14

    主题

    14

    听众

    76

    积分

    升级  74.74%

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

    [LV.4]偶尔看看III

    社区QQ达人


    % i9 ~$ C0 g9 w- N' Y! [3 x" g1 w) M! f
    8 C( Z  x6 C# e# \# L+ C
    。。。。。。。。。。。。。。。
    * {9 ~# g: z! |3 E* y2 \6 T: v! ]! c
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-4-16 01:29 , Processed in 1.223679 second(s), 58 queries .

    回顶部