QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2170|回复: 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) s! e! e0 C! C- }8 v0 H
    %频率调制与解调的Matlab演示源程序5 \2 K% s4 `; N8 k& k8 k5 l; d
    %可以任意改原调制信号函数m(t)$ }, J; |  L, b6 K3 [( d6 u9 f% i
    %电子信息工程  杜怀超 091308305  
    % @3 M/ |* s1 N+ u& f% N. {- A; K%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    ! b( t' q7 `$ g; u# T9 V%*****************初始化******************& u7 H# P/ s6 Y, Q# [8 U
    echo   off      
    : y; |) a0 O, L4 L* _close  all
    2 P# B1 j- v0 i; f$ \2 rclear  all
    3 c) @3 O# Q1 |5 {clc
    8 a- P5 w1 Z# a8 m+ a%*****************************************
    3 N4 n3 [( A2 _$ c; S: U3 F%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·0 K" C6 m  w* `6 Y  M7 |- F
    %****************FM调制*******************
    # `1 J- C. h6 Adt=0.001;                                   %设定时间步长
    , d% s8 Q! Q& J9 \% n2 a) @- O+ e+ @t=0:dt:1.5;                                       %产生时间向量2 B! o, b$ m1 |- W
    am=5;                                      %设定调制信号幅度
    ; ^+ `( M: A+ j9 m9 a. ]9 S/ Mfm=5;                                      %设定调制信号频率* J7 v* g2 C$ E8 K/ l. e
    mt=am*cos(2*pi*fm*t);                        %生成调制信号
    6 Y( N6 c1 `# p+ m( P- P# H/ A7 kfc=50;                                      %设定载波频率+ k7 E' E6 O$ H* i9 V4 V
    ct=cos(2*pi*fc*t);                             %生成载波- n. e5 l) U* E# N( @
    kf=10;                                      %设定调频指数
    8 r2 l, b5 b' Q7 U+ S0 r+ e& P7 J# Qint_mt(1)=0;* o3 T3 f: A3 w+ k" o  s( O
    for i=1:length(t)-1  , X7 [" y2 y. B- G
        int_mt(i+1)=int_mt(i)+mt(i)*dt;               %求信号m(t)的积分9 U: ~' }* D, @8 X9 R) G
    end                                          %调制,产生已调信号
    8 f3 \+ D9 `! e( A; U& {+ v5 P+ Isfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt);            %调制信号
    1 m1 t+ k* H( V# d%*****************************************' Y( y) u" H3 l2 K; e. Z6 [2 F: H  Q! g
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    $ U! r. X  w* p( w% I%*************添加高斯白噪声*************** g# y$ q4 L5 ?$ L$ z* f1 ]. X- ?- D
    sn1=10;                                     %设定信躁比(小信噪比): @. G/ n; X; h& U: f
    sn2=30;                                     %设定信躁比(大信噪比)
    0 m" |+ J; |& ?8 h3 T2 Vsn=0;                                       %设定信躁比(无信噪比)
    * b2 L0 p4 n6 odb=am^2/(2*(10^(sn/10)));                     %计算对应的高斯白躁声的方差0 y5 ^  M* Z' _' F
    n=sqrt(db)*randn(size(t));                      %生成高斯白躁声
    , P! x6 B$ v; S+ e0 a( }" }5 |nsfm=n+sfm;                                %生成含高斯白躁声的已调信号(信号通2 o$ q: x: V2 J" p! k
    %过信道传输): h+ H+ x4 b+ v$ e3 e  \
    %*****************************************
    " Q% C6 l/ ]* X3 T%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    # q* X3 ^" e+ u%****************FM解调*******************
      W+ f. R9 d6 _. G+ sfor i=1:length(t)-1                             %接受信号通过微分器处理
    0 [0 d5 t, F. M4 Q  C    diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
    7 H( H3 J, |+ {- b* a2 Q& Nend5 \. F: D1 U. q) s
    diff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)7 _  Q2 e  R2 D% o" T! }
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;+ m5 ]- M- q% N
    diff_nsfmn1=diff_nsfmn-zero;
    0 o+ o6 L( `+ D- N%*****************************************
    ' e8 D4 B' T; ~" u) X7 `3 H%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    ( Q1 Y7 h3 d+ ?- q* @9 r%**************时域到频域转换*************** m% G. X4 N, k) A- V! }2 Q9 H
    ts=0.001;                                    %抽样间隔% Y$ W* E- d8 ]6 t* {4 ~7 C# U
    fs=1/ts;                                      %抽样频率1 k: N1 t3 i) K2 {) R: b) O# u9 W/ H1 O
    df=0.25;                                     %所需的频率分辨率,用在求傅里叶变换: k( \: e; f  }7 o# H, M$ }3 c
    %                      时,它表示FFT的最小频率间隔$ t/ H1 N& [8 @% Y' d
    %*****对调制信号m(t)求傅里叶变换*****
    5 h$ y$ k; I* ^2 E7 s& Vm=am*cos(2*pi*fm*t);                         %原调信号
    ( M/ e5 S8 v! T( s/ lfs=1/ts;0 Y  B4 n9 p6 s1 a- k; U+ W
    if nargin==2# ~0 k2 M) P1 q& J1 f9 \9 R
        n1=0;
    : B3 L4 T7 U: Y; @  ?9 Y+ Melse- s1 E& Z! _; i! a+ o/ @
        n1=fs/df;. w1 G$ p5 x8 ?8 g6 s
    end& V: k( N* E0 e& e; k3 {) o
    n2=length(m);8 C0 t" E% T: U
    n=2^(max(nextpow2(n1),nextpow2(n2)));$ J# R9 b$ l9 X$ Q1 f# S
    M=fft(m,n);% `  x* K$ R/ z: a8 a2 b, P
    m=[m,zeros(1,n-n2)];. O' V; ^2 \( K) H. q
    df1=fs/n;                                   %以上程序是对调制后的信号u求傅里变换9 ^7 B. c4 F) Y! p) e6 N9 s# f
    M=M/fs;                                   %缩放,便于在频铺图上整体观察
    " r/ k0 C! N5 I% b6 ^( J1 Mf=[0:df1:df1*(length(m)-1)]-fs/2;                %时间向量对应的频率向量* x8 x3 r9 E7 c: u

    . f# {0 ]! q, v2 `& v* E: }%************对已调信号u求傅里变换**********% @3 L! _7 Q7 i- }, Z, F. @4 I
    fs=1/ts;# S! e& n' P: S; a* F' W7 b
    if nargin==2+ M. X/ O! a7 ^. |. `  i- p
        n1=0;! s% A. R7 T$ q3 i1 ]; y" ?
    else
    * y7 i$ D% N! V    n1=fs/df;
      j  |9 X' ?9 j! z# Yend
    6 e2 W, F8 l, f5 k; ~5 B# v" t  Yn2=length(sfm);  }  F1 B0 U0 w  a* n. E7 K% y, h
    n=2^(max(nextpow2(n1),nextpow2(n2)));( K  E* G* [, j2 r" p
    U=fft(sfm,n);
    + ^4 _6 x+ V, a) r# q8 Tu=[sfm,zeros(1,n-n2)];
    1 K7 r/ U/ w/ Q8 C2 Z+ D  S( {& ]df1=fs/n;                                   %以上是对已调信号u求傅里变换7 a* E/ H3 q# C2 ~+ t
    U=U/fs;                                    %缩放
    ) ]' s6 Z6 n& |0 b%******************************************( \: ^0 i1 [1 c
    %*****************************************
    0 X% s% m% V/ Q- U" m0 {9 g%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·8 N( h: U9 Y1 R. d# t" V  v) s
    %***************显示程序******************
    - a1 O& s6 A) m+ R# {5 udisp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')6 ^3 [! z7 c) l, d! T" m/ i' M
    pause! C% K% {' @6 P5 h% a. W' ~
    %**************figure(1)******************+ F( E7 ^3 a( _+ A- m+ e8 v
    figure(1)( j9 O& M' c( {0 X' ?
    subplot(3,1,1);plot(t,mt);                                 %绘制调制信号的时域图$ d) w3 Z$ t0 `) a5 |- g
    xlabel('时间t');" n! d$ E  V1 o5 v
    title('调制信号的时域图');
    / ~4 {- I1 y8 R% S2 Z5 S. g: F5 k( u% osubplot(3,1,2);plot(t,ct);                               %绘制载波的时域图
    9 N  E, b+ f+ x+ t, F: Q6 k+ Txlabel('时间t');
    2 C# V8 Z' I5 S0 N2 B/ Mtitle('载波的时域图');
    # T# L0 l( O' e* l! R* f. d% X- Hsubplot(3,1,3);5 g4 d* }4 }; ~8 r) {3 p: E
    plot(t,sfm);                                                  %绘制已调信号的时域图6 C' b+ q$ u. y  \  v' Z8 C
    xlabel('时间t');
    * x3 T- e) k9 D+ h% l$ ytitle('已调信号的时域图');
      O" r4 q9 G  [%******************************************
    ( E, t& c) w' s, ~* i  qdisp('按任意键可以看到原调制信号和已调信号在频域内的图形')8 k% i7 P# K2 ]# j' H& [, R0 i
    pause
    ; D3 C  M- A  f; Q) y%************figure(2)*********************
    4 s$ X  s! o$ a: a( d6 Gfigure(2)
    1 D0 U- B" P4 p7 _subplot(2,1,1)% \( V# t: Q, j4 A1 A! w/ S
    plot(f,abs(fftshift(M)))                        %fftshift:将FFT中的DC分量移到频谱中心
    . |; F3 q. `% m  J* rxlabel('频率f')
    / J& T, E1 G9 v. U  M. ktitle('原调制信号的频谱图')7 Y+ Z" Q" i: {/ j" {
    subplot(2,1,2)$ B( u. _0 S. o; L$ B
    plot(f,abs(fftshift(U)))7 r0 m0 r0 Q. D, {7 p9 m
    xlabel('频率f')  e; x/ @2 k6 X" E+ l( T
    title('已调信号的频谱图')) P) H& g8 H" W; R: o, h
    %******************************************5 A4 A& o0 x- [' b
    disp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')5 r  L4 \6 P0 L- R
    pause
    & D$ w2 ]" K" j. x6 e%**************figure(3)******************. B8 J9 v9 _( p2 R2 N" a3 G- j
    figure(3)) U$ h  S' U" ]) J, D- n2 C$ W
    subplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图
    ( `0 z+ [& K8 Z: h' U# V# hxlabel('时间t');
    " j8 v4 u6 k/ ?& Ptitle('调制信号的时域图');4 Q/ E1 `5 X) R
    subplot(3,1,2);plot(t,sfm);                              %绘制已调信号的时域图
    / h+ d. b! l1 n5 P/ [6 I. y" yxlabel('时间t');$ }4 h7 R4 C0 o- a# n4 I
    title('无噪声条件下已调信号的时域图');
    4 x  @# g4 y& y( ~& i9 f$ @2 Nnsfm=sfm;                              
    3 }) @7 V/ G2 H  X" H, U3 [8 R% ~for i=1:length(t)-1                           %接受信号通过微分器处理5 N& j2 A8 T" D0 J
        diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
    9 B, j1 l4 k5 K5 @8 Mend
    0 ~3 S1 b7 O: g. N0 n& ^1 hdiff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)
    . a5 Q$ r% m6 x9 f" c7 I) ?6 lzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;, a$ D+ ~, m! e) x
    diff_nsfmn1=diff_nsfmn-zero;/ L7 p9 H( X& ~
    subplot(3,1,3);                             %绘制无噪声条件下解调信号的时域图
    ' }; g9 N9 n+ b+ \1 G2 W- v+ R7 q$ L  jplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');* y" E" i- g" j1 ~8 E; @
    xlabel('时间t');                          5 H) q" `. W7 q0 w8 @$ I
    title('无噪声条件下解调信号的时域图');9 m9 }; F5 t3 r6 Z# {8 v; q$ S
    %*****************************************% p6 s0 H9 `  T. r
    disp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')0 e6 H. t  e# ]0 O8 a9 L" P& V8 k( J
    pause
    ( u8 m4 w! C, X0 M* h%**************figure(4)******************9 d8 x3 @9 Z. r& z  j; X, o4 k+ [2 q
    figure(4)
    % f6 i# @1 J& F/ p4 Esubplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图, [  B+ S3 B8 g; e. P7 T
    xlabel('时间t');
    * x6 H$ r+ O" A" {0 _. etitle('调制信号的时域图');4 {( s( ]* @# c
    db1=am^2/(2*(10^(sn1/10)));                   %计算对应的小信噪比高斯白躁声的方差4 L$ y3 m2 V2 k3 m* D$ ^
    n1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声
    - Y, Z9 h6 J, t8 [( y- T/ k1 fnsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通
    1 s" z) V. n* Q1 Y2 ]  F5 q%                      %过信道传输)8 A2 b2 O$ F2 a/ ~3 M
    for i=1:length(t)-1                            %接受信号通过微分器处理
    : U4 y# I6 S% _/ m; L4 Y' t    diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
    * k2 I: Y5 ^/ u' K1 w" d/ Eend
    " Y5 g2 K  k( j9 \' Q3 c. ^diff_nsfmn1 = abs(hilbert(diff_nsfm1));   %hilbert变换,求绝对值得到瞬时幅度(包络检波)5 s+ @( L2 k0 e3 F% D
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    . Z8 Y$ k1 D8 P! O4 zdiff_nsfmn1=diff_nsfmn1-zero;
    * O/ X. M) X, M2 c( q9 _( c- Hsubplot(3,1,2);1 n" O7 {' \/ d+ M( c0 c) ^( P
    plot(1:length(diff_nsfm),diff_nsfm);      %绘制含小信噪比高斯白噪声已调信号的时域图. C& H. L: E* o" |! I# T5 L4 C& f
    xlabel('时间t');
    8 d8 Y+ c" \# y; \$ Etitle('含小信噪比高斯白噪声已调信号的时域图');+ R! ~9 X1 t" z/ W5 F
    subplot(3,1,3);                        %绘制含小信噪比高斯白噪声解调信号的时域图
    ' ~' \4 N4 w) F% h3 Rplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
    % D9 E- a1 S& A; s' R7 b5 fxlabel('时间t');                          
    . q# O1 N  O5 gtitle('含小信噪比高斯白噪声解调信号的时域图');2 R  d7 H' }/ X7 |' s9 N
    %*****************************************3 d5 s9 F$ e* U( U
    disp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')  Y1 V. P1 I9 X" r7 s" b! i) p
    pause0 v2 ?5 k) ]' z' [- V; m7 [
    %**************figure(5)******************
    ' ~8 h% A- \4 Jfigure(5)
    * }  s( J/ \8 d% `: O& dsubplot(3,1,1);plot(t,mt);                                   %绘制调制信号的时域图8 O4 \# G, G% L) }) i: A5 O( c
    xlabel('时间t');
      ~7 ]: ^$ {7 p) s, d6 @3 D3 z7 o( xtitle('调制信号的时域图');
    6 u& W  `* l: n/ ~  o5 F2 U) odb1=am^2/(2*(10^(sn2/10)));                   %计算对应的大信噪比高斯白躁声的方差
    0 A4 a2 t- l; a! P* @: Qn1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声5 b5 m( P# o* S: q& D8 e/ Y5 n
    nsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通过信道传输)
    4 e7 H$ Y% x) t/ tfor i=1:length(t)-1                             %接受信号通过微分器处理
    0 ~) y1 w, z6 z    diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;: a4 V; ]8 n% V: O/ G
    end
    8 Z4 A; M4 y3 b( U9 q1 H4 v4 Xdiff_nsfmn1 = abs(hilbert(diff_nsfm1));            %hilbert变换,求绝对值得到瞬时幅度(包
    2 ^. r, B) F) G7 Q+ {2 a%                      %络检波)1 U  m' M% _; k9 r3 K; ~6 N
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    : o2 ?, g! X& }- Zdiff_nsfmn1=diff_nsfmn1-zero;+ g3 w! H3 b( q9 e  @/ f* O
    subplot(3,1,2);
    0 ~& g/ g5 X- I, u' e+ y1 Splot(1:length(diff_nsfm1),diff_nsfm1);             %绘制含大信噪比高斯白噪声已调信号0 s" v" ]! k# u9 s# |% h: L
    %                      %的时域图4 e1 |! q- @* X7 \$ o
    xlabel('时间t');
    5 S- C1 y/ m5 o9 l" a& _" {title('含大信噪比高斯白噪声已调信号的时域图');
    % R% N$ O( H" i" S2 ?1 L( w* ysubplot(3,1,3);                                %绘制含大信噪比高斯白噪声解调信号
    % N: \% i9 J# k%                      %的时域图
    ( Z# G) O& n3 Q: h2 wplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
    , c; B* ?8 [6 O8 ixlabel('时间t');                           
    5 R" m+ q) j; m" ptitle('含大信噪比高斯白噪声解调信号的时域图');; q" X/ z: ^7 d# @( _6 A& f
    %*****************************************
    5 I* a7 i' Q, B0 h$ k- A%******************结 束*******************0 z4 j6 a8 w$ x$ P
    ) k1 l" [5 S. ~/ z
    # [$ u, J, [& `; h) Y7 Z% L
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    李秋锐        

    14

    主题

    14

    听众

    76

    积分

    升级  74.74%

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

    [LV.4]偶尔看看III

    社区QQ达人

    / T: i! e7 S4 @  M/ j  n0 P. B8 i2 R

    * b( e: F6 Z( Y5 p& V: N
    * e% J; t( P+ M# s. X! U& m* D。。。。。。。。。。。。。。。( v0 e. o7 H9 u  N# i

    & g5 Y! z* ?' H. z
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-8-3 03:08 , Processed in 0.484194 second(s), 59 queries .

    回顶部