QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2165|回复: 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' ^1 F0 t" x* M2 p+ U
    %频率调制与解调的Matlab演示源程序% s! b+ a2 d4 s  [( }- I& l
    %可以任意改原调制信号函数m(t)
    4 U& h" ?: b9 ]8 L) Z$ {%电子信息工程  杜怀超 091308305  
    # {! j4 N8 H, q1 E. s" u4 b%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    2 K2 B1 o2 g9 {6 X! j4 H, K%*****************初始化******************/ m8 k" c" x. n7 }$ f0 X% T
    echo   off      
    " a4 x, B0 B! `' W3 F( jclose  all  T0 E# v% P! U& X9 ~5 I
    clear  all
    ( o" L/ i% ?; `+ M( M, [clc& l& }) p% d6 N/ p6 w
    %*****************************************% D+ F4 G, @+ N
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·7 m' ^5 V. C* \2 `% x
    %****************FM调制*******************  q4 P8 P; [3 U8 I" C- Z. p/ Z3 v
    dt=0.001;                                   %设定时间步长
    2 y; A2 Q1 L) d! o1 E8 Lt=0:dt:1.5;                                       %产生时间向量1 O9 w0 ^8 y$ p6 L- J
    am=5;                                      %设定调制信号幅度
    - `4 G4 M8 p0 j" Nfm=5;                                      %设定调制信号频率; q6 X% v  g' y9 y  H4 A
    mt=am*cos(2*pi*fm*t);                        %生成调制信号
    5 C6 N' e- M* Jfc=50;                                      %设定载波频率. t* }8 I2 L4 h+ i
    ct=cos(2*pi*fc*t);                             %生成载波  w0 i& L/ K4 J' J  P; ~& y
    kf=10;                                      %设定调频指数1 M) X9 e8 H# _- [
    int_mt(1)=0;
    $ w5 Y( |: M+ a5 o2 Y, ?& @: nfor i=1:length(t)-1  " c+ I/ c# i4 D" W- i
        int_mt(i+1)=int_mt(i)+mt(i)*dt;               %求信号m(t)的积分
    % I# B1 K4 a+ E. mend                                          %调制,产生已调信号
    ) s; Q6 l- o; Y8 D5 s$ o4 ~* Wsfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt);            %调制信号$ H; |6 D% I) J0 C$ P3 E
    %*****************************************1 o7 p" _# i) ~( y( \& X0 b& g
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·+ x& [& ~( \( s' s
    %*************添加高斯白噪声**************
    ( r& m* b- ]& V' dsn1=10;                                     %设定信躁比(小信噪比); F' d: U* ?( d. ~' _$ Y$ M
    sn2=30;                                     %设定信躁比(大信噪比)
      Q6 s9 ]! e) O, Z4 Esn=0;                                       %设定信躁比(无信噪比)* O% z" J) ~" g4 L* v: p: x
    db=am^2/(2*(10^(sn/10)));                     %计算对应的高斯白躁声的方差* J5 A2 N' a1 X1 }5 H' h" j; U- j; \. V
    n=sqrt(db)*randn(size(t));                      %生成高斯白躁声
    1 d3 P) q+ U2 {. }5 ~$ @nsfm=n+sfm;                                %生成含高斯白躁声的已调信号(信号通
      U; N( z. u8 j9 ~0 p%过信道传输)% |( \$ {5 q! V
    %*****************************************8 W$ \6 F5 a5 ?# a
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·6 s+ J  v. l2 n
    %****************FM解调*******************& F2 q$ y/ \- _- D; p0 e
    for i=1:length(t)-1                             %接受信号通过微分器处理
    % q: X7 X4 i3 ], ]    diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
    / h+ F- C* k! u4 C4 o. Cend
    # @7 K0 Z0 B: {4 {9 }# Z! }$ t- c, Udiff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)
    ' p2 F1 O& q' O- q2 b" k  azero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    , i! G1 M- H5 M$ P$ c& L* Qdiff_nsfmn1=diff_nsfmn-zero;
    ) M+ p; r% j+ U$ `5 _# P%*****************************************1 i$ p, N& V3 U8 E7 Y  I
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    % M8 C0 U; I' R9 `3 `%**************时域到频域转换**************% u1 N: u1 p3 l. M
    ts=0.001;                                    %抽样间隔
    / O; D" |8 s+ j+ n2 H, ufs=1/ts;                                      %抽样频率% K" }! T0 O8 v! w2 |8 |- m8 z8 d
    df=0.25;                                     %所需的频率分辨率,用在求傅里叶变换. I$ \1 {) d: W4 h. b" \4 g0 Q4 J/ u
    %                      时,它表示FFT的最小频率间隔* ]$ O& i5 R3 V3 `, N- Y3 t- r( p
    %*****对调制信号m(t)求傅里叶变换*****4 e( W7 |9 g5 L2 L7 ~1 J+ g1 o
    m=am*cos(2*pi*fm*t);                         %原调信号- G: g3 B1 g6 }$ r% \
    fs=1/ts;7 b  C6 x3 l% m* @( Y
    if nargin==20 y* Y3 U1 u& d; M* m) j
        n1=0;
    5 r, S0 |" `9 I! r7 q5 g( l4 F$ f) Jelse, e+ X0 r8 M2 @
        n1=fs/df;
    4 m7 ]% _' ~) V2 L' n( J( ?end8 _* P0 k8 ]5 |8 o( U
    n2=length(m);6 S& H: Q( ]1 N. K- V; u& E) B
    n=2^(max(nextpow2(n1),nextpow2(n2)));% C# Q! Z0 `0 M
    M=fft(m,n);, a- S& f0 u( a# U, j) \) }3 ^
    m=[m,zeros(1,n-n2)];
    - Z9 }7 ]9 N& m% D% m1 Cdf1=fs/n;                                   %以上程序是对调制后的信号u求傅里变换
    + `% }+ b- q3 GM=M/fs;                                   %缩放,便于在频铺图上整体观察
    5 r+ `1 [0 `0 r  `- Rf=[0:df1:df1*(length(m)-1)]-fs/2;                %时间向量对应的频率向量
    : M( Q8 g; S) ~6 L0 g
    1 h( B; y4 T* M3 n( s6 {%************对已调信号u求傅里变换**********$ Y% A3 j' k" c
    fs=1/ts;( [9 i" x( ?5 Y& D. K; z/ u
    if nargin==2+ i9 h" @( b: M& b
        n1=0;
    + F" S' ^" V! S$ u+ o4 y9 Q1 yelse9 y! G7 A/ L( y) G3 w& u
        n1=fs/df;. j+ g, t; x' N) l8 |/ H0 H
    end  I8 ?9 P1 W' s' A+ _9 }* Z
    n2=length(sfm);# |  V9 }- t, Q) t
    n=2^(max(nextpow2(n1),nextpow2(n2)));
    ( y- V9 f) o  P& PU=fft(sfm,n);
    * s9 a2 o4 _5 a8 k- @! u# Fu=[sfm,zeros(1,n-n2)];
    / g; ^  n. Z8 C* k" fdf1=fs/n;                                   %以上是对已调信号u求傅里变换1 t8 ~# N3 h$ E
    U=U/fs;                                    %缩放
    * Q& ]4 t3 K% m2 M4 b0 [%******************************************: s& C1 G0 K3 E5 ~' Y! n
    %*****************************************, P# C* |, ]1 m2 [* f; R1 D4 [
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·) L) C7 {9 O7 i4 p/ k
    %***************显示程序******************
    0 u/ l) ^/ V0 U2 F$ q1 Bdisp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')
    6 v0 _8 U: _4 d1 x7 x$ ypause
      U' ]8 ]# `) z6 b%**************figure(1)******************
    + D; J3 w+ z, \6 w" Hfigure(1)0 T3 E4 A! U2 a! D
    subplot(3,1,1);plot(t,mt);                                 %绘制调制信号的时域图
    / s' {/ f& V/ `/ K8 oxlabel('时间t');7 b5 |3 N2 b' k
    title('调制信号的时域图');& E- G" i" l, ]& Y# v* M  |
    subplot(3,1,2);plot(t,ct);                               %绘制载波的时域图! Q) q% x7 ?9 N3 `3 L2 e, ]
    xlabel('时间t');
    ' t. A' v4 A* x3 G' `" |" Vtitle('载波的时域图');
      w2 N0 X. ?, a" t  S# T1 ^subplot(3,1,3);: b. U- O, L% u6 |5 }3 {& A
    plot(t,sfm);                                                  %绘制已调信号的时域图! t6 g6 E- y% D# n7 A5 u3 E& t+ s+ N
    xlabel('时间t');
    * m+ A5 e) ?: `; S4 j1 Otitle('已调信号的时域图');
    9 K) T$ E2 b9 @4 R' d2 I%******************************************  t! h' q% L# d* N/ `1 Y# g
    disp('按任意键可以看到原调制信号和已调信号在频域内的图形')  n; Q, S3 k# N" n/ e
    pause/ ^! d  ]  f: }
    %************figure(2)*********************
      p; _3 j6 q- [0 X, H: Zfigure(2)" t) E0 |# a4 z" s# D7 G& _& ~
    subplot(2,1,1)! S3 y5 E. _! v0 B
    plot(f,abs(fftshift(M)))                        %fftshift:将FFT中的DC分量移到频谱中心
    8 W+ N& P( |% L8 y2 W$ }xlabel('频率f')
    ' M  c1 _& a- b% btitle('原调制信号的频谱图')
    + [% L# i- }' |4 i  c& osubplot(2,1,2)
    2 L2 k1 k3 u+ j9 ]0 g$ e# S2 Gplot(f,abs(fftshift(U))), F4 L$ F( V: T- ^" @8 _
    xlabel('频率f')
    2 J7 p8 u8 W6 u  D1 Ititle('已调信号的频谱图')
    7 G& {3 Z0 Z$ A# P5 t* F6 [%******************************************
    & H/ R. Y2 w" ^* D" q, C( R0 Wdisp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')" J2 s2 G9 {1 Z$ d
    pause* I7 \6 p5 W' Y) y! x9 a  W
    %**************figure(3)******************
    & L' Y, `# b) K" {' Ifigure(3)
    . a$ H2 x2 D3 z5 l2 n$ ^8 o. Q6 x; Z% qsubplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图
    + \- Z7 `  y4 \, L5 H; j2 Sxlabel('时间t');, g# C9 ?  h' l6 E& G
    title('调制信号的时域图');
    6 p7 m0 D! ]" G" J) ?subplot(3,1,2);plot(t,sfm);                              %绘制已调信号的时域图4 g( _; l! Q2 q$ ]/ N
    xlabel('时间t');
    6 l) ]( O! x; e! j: Mtitle('无噪声条件下已调信号的时域图');
    ' K; s' q: A3 _8 v4 }: Mnsfm=sfm;                              
      q2 o( _7 d% zfor i=1:length(t)-1                           %接受信号通过微分器处理$ l# N) u- c8 ?2 |/ L' f4 A: ~
        diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;, S3 E' z- x4 U1 A
    end( I! v( V0 C2 h& K& P6 L
    diff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)9 q& s; C4 g; {0 D4 M# d( g' Z+ L5 r/ o
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    9 C( C$ m7 F1 A2 U( X' c  Ediff_nsfmn1=diff_nsfmn-zero;
    2 c7 ?( T9 J& G9 v: \0 i% w. ssubplot(3,1,3);                             %绘制无噪声条件下解调信号的时域图
    / n: Q; u: `) V. ~- U0 ?* Bplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
    $ B6 L9 |/ d5 `xlabel('时间t');                          
    $ U2 d9 @8 z$ h. S+ D1 }0 I3 W& ctitle('无噪声条件下解调信号的时域图');
    & K5 S* E3 b6 y( A%*****************************************
    3 U, [# Q- q' r5 ydisp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')2 O7 ~6 E! |: |& E' g2 e% W
    pause3 p" [7 O5 L: z7 |+ k* b
    %**************figure(4)******************' o) f9 S6 Z9 j& p% p; ?
    figure(4)
    ! E) [  e: l/ Q; asubplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图- g( ]6 [. P+ F; f! Y! ~' a3 Q# x$ R
    xlabel('时间t');8 z" s+ l7 P* Z) Y" V" k
    title('调制信号的时域图');
    . i; R; Q6 E* cdb1=am^2/(2*(10^(sn1/10)));                   %计算对应的小信噪比高斯白躁声的方差$ z: U! \2 g3 @8 S2 q5 D- ]
    n1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声
    5 S* y# c$ F0 m) tnsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通5 ^8 E' N2 c$ M+ z$ |' o
    %                      %过信道传输)+ G3 t/ o- s7 o5 D$ j4 k8 Y% u: J
    for i=1:length(t)-1                            %接受信号通过微分器处理
    . t: J( K& D( f) J: p    diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;3 u# ]1 P) L2 U/ [" F
    end+ |. \; c0 a& z' z$ U& j$ h( ~
    diff_nsfmn1 = abs(hilbert(diff_nsfm1));   %hilbert变换,求绝对值得到瞬时幅度(包络检波)/ Z) ~! c. X! O* A- v- i! m
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;- @8 b+ L' L- X9 e7 }0 [
    diff_nsfmn1=diff_nsfmn1-zero;* e! c$ v4 W5 m0 p
    subplot(3,1,2);
    5 S6 N! I; @5 g* N( L+ b" J4 c7 Uplot(1:length(diff_nsfm),diff_nsfm);      %绘制含小信噪比高斯白噪声已调信号的时域图
    1 K4 p- ~5 ]& Zxlabel('时间t');
    " I) }1 h. Y  M1 [title('含小信噪比高斯白噪声已调信号的时域图');/ u* n( O2 o$ ]6 J
    subplot(3,1,3);                        %绘制含小信噪比高斯白噪声解调信号的时域图! a9 I/ g4 C$ h
    plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');: c* X- o$ \5 U  |
    xlabel('时间t');                          
    # a+ ?6 [6 a  I3 Ititle('含小信噪比高斯白噪声解调信号的时域图');
      j8 j% A. [- k3 ~2 x0 H) g%*****************************************$ {: a' j* l4 U) E
    disp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')' i  L) @! C  w( ]5 y+ ?9 h
    pause% m3 ?, A; E1 u
    %**************figure(5)******************
    ; \& \: ]' P0 I6 c; y/ p! H. w; ~figure(5)4 _: n* }6 t- }* G+ d! e4 u. x0 z, h
    subplot(3,1,1);plot(t,mt);                                   %绘制调制信号的时域图
    7 D8 H2 U+ A+ l5 ]5 exlabel('时间t');6 V' c/ w! B- p4 `4 |0 _
    title('调制信号的时域图');
    & }# Y, B7 i" d0 }db1=am^2/(2*(10^(sn2/10)));                   %计算对应的大信噪比高斯白躁声的方差- }/ n; d& N' u7 s& s) t
    n1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声0 ]$ k$ t0 Z9 Y7 n* k0 P' s3 Y
    nsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通过信道传输)/ e! S  l4 ^6 Q' z* g/ H* w# [
    for i=1:length(t)-1                             %接受信号通过微分器处理) N* m* S* P% _6 w& Z. q$ ]) E
        diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
    3 o) T" l7 z& S* ^, o3 m9 V5 Tend. l5 S$ l% w5 b- o3 d& o- g
    diff_nsfmn1 = abs(hilbert(diff_nsfm1));            %hilbert变换,求绝对值得到瞬时幅度(包% P  N) ]) {- i' D- Z
    %                      %络检波)/ J* A6 e( _6 z2 R  Y3 \5 S. V
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;2 s% l( H' A3 ]  |! X
    diff_nsfmn1=diff_nsfmn1-zero;
    5 ^) P4 r) i- }0 j' i* Q. hsubplot(3,1,2);
    2 s+ `' g* ^: _1 b; v9 U- uplot(1:length(diff_nsfm1),diff_nsfm1);             %绘制含大信噪比高斯白噪声已调信号
    / S5 g7 f. a' s& D% J  z3 m5 ~%                      %的时域图" x9 d9 J) \% E. w
    xlabel('时间t');
    3 {& h5 Q7 b) J1 @. Etitle('含大信噪比高斯白噪声已调信号的时域图');
    : M. _1 P/ i7 h% d7 M; A8 }* `: }) Z- r8 Hsubplot(3,1,3);                                %绘制含大信噪比高斯白噪声解调信号
    % W( q7 e3 p! C3 f4 `! [2 O%                      %的时域图4 l1 B& r1 s  C9 \) H4 s5 P" z6 E
    plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');4 T7 Z" @9 w4 [* l/ E
    xlabel('时间t');                            " }- n4 G8 n0 S, W4 ?
    title('含大信噪比高斯白噪声解调信号的时域图');' S  ~/ i& `. I$ @
    %*****************************************" O3 ?0 `1 l+ B4 R! T; l2 C& ]
    %******************结 束*******************( |0 u* ?, G" M5 x2 Z( [
    ( C  X  e* m' B8 W) u* [
    % k3 @5 U0 A/ g0 j, N+ V$ `& H
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    李秋锐        

    14

    主题

    14

    听众

    76

    积分

    升级  74.74%

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

    [LV.4]偶尔看看III

    社区QQ达人

    / t5 c5 ]7 P2 i# J9 `0 G
    ; e2 t3 L" |' h0 A7 N0 \1 n/ ~
    + J) h7 x, \2 ?2 w: l: Y
    。。。。。。。。。。。。。。。
    5 u% l- `9 N# ~0 M* g/ ^  S% i) e0 `. E$ L& r8 h7 D, C! E
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-7-31 02:40 , Processed in 0.453157 second(s), 62 queries .

    回顶部