QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 1884|回复: 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
    ( ^3 ^7 d2 |. E: E2 |+ S7 n%频率调制与解调的Matlab演示源程序0 z6 H1 ~! b# u2 W$ I- r+ e
    %可以任意改原调制信号函数m(t)9 g3 Z. ~' v  h1 y/ v- \
    %电子信息工程  杜怀超 091308305  
    ! l( n2 E/ b3 m: g  }%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    : N) _: l6 P/ \1 o5 m%*****************初始化******************9 S# R! g* ?( r4 Q/ g: o+ w
    echo   off      
    ' j$ o+ P! k: q8 \close  all
    1 r. F$ r- {& p# e* dclear  all+ J1 G" u; T+ J5 Z
    clc8 u% u) I' y8 H8 |6 u' p+ U
    %*****************************************
    0 U  T6 G& v! v0 _+ x- D0 `%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·) A/ v' j* d% m$ q
    %****************FM调制*******************
    # ]; X$ n9 z3 G0 L+ [2 \& qdt=0.001;                                   %设定时间步长
    # f) y" d* r2 {9 Jt=0:dt:1.5;                                       %产生时间向量! D" |" ^" U; ]" c7 u& C4 q1 b
    am=5;                                      %设定调制信号幅度
    ; u5 z1 {- ^: x: ~) s" L" T, Q+ _5 Rfm=5;                                      %设定调制信号频率  G  u, b5 g' m0 N! C
    mt=am*cos(2*pi*fm*t);                        %生成调制信号" U2 B0 C- S% G- F' Q% D+ @
    fc=50;                                      %设定载波频率4 _7 C+ H! Y+ S1 G8 T2 M
    ct=cos(2*pi*fc*t);                             %生成载波
    + v( f, q" ?. Ukf=10;                                      %设定调频指数5 C& D8 o: _5 F
    int_mt(1)=0;7 W5 @) q5 w& D, T
    for i=1:length(t)-1  1 I9 ~0 N4 J) c$ J+ J# y) p1 I
        int_mt(i+1)=int_mt(i)+mt(i)*dt;               %求信号m(t)的积分
    8 i. I4 ?* d6 q& B1 g" l( Z: g, send                                          %调制,产生已调信号4 k6 o$ V0 `& V. p1 U9 o  d
    sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt);            %调制信号
    ( k/ w$ R& g! m; S%*****************************************
    . s% f9 K8 L! I0 [& ?; K%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·. u% V$ G" C  l  |
    %*************添加高斯白噪声**************0 E# d& Q5 i8 k
    sn1=10;                                     %设定信躁比(小信噪比)
    . O+ m2 O8 r/ B0 g$ J1 jsn2=30;                                     %设定信躁比(大信噪比)' C5 }1 y& Q. M- n. U6 m
    sn=0;                                       %设定信躁比(无信噪比)
    $ v8 Q" v; |) O. z/ |db=am^2/(2*(10^(sn/10)));                     %计算对应的高斯白躁声的方差: R' ]6 V3 t( Q0 D1 ^& v
    n=sqrt(db)*randn(size(t));                      %生成高斯白躁声' x: F% h4 h7 t- G0 M
    nsfm=n+sfm;                                %生成含高斯白躁声的已调信号(信号通
    * ~4 P/ v( v1 v6 i% J%过信道传输)( v% u8 Y& b* v, C
    %*****************************************) h( {$ G$ _2 T# a% I$ t$ [
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    ; B/ _* x$ \9 d$ J" c; |6 J4 n! D/ _%****************FM解调*******************! U& K& ^7 b0 S
    for i=1:length(t)-1                             %接受信号通过微分器处理, X% p+ }1 X; a) \/ m
        diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
    % j( J) L% [1 q) q, Send2 z; c2 ]0 X% s# P( @; X" _; W) b! I8 G
    diff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)1 T/ U, Z  q, D8 k& E- C
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;/ I9 W6 [0 E. o0 X) e1 w
    diff_nsfmn1=diff_nsfmn-zero;
    + @- i9 U9 C+ ^  e%*****************************************3 _0 c4 ^* T9 C) ?) S6 ~' z
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·5 R7 s* C) ~' D0 |7 i* O+ ]: M
    %**************时域到频域转换**************
    1 ]3 z$ d* y: E" V/ ?& ?1 vts=0.001;                                    %抽样间隔( u1 y' N( L3 \, Z& L% n
    fs=1/ts;                                      %抽样频率) D+ ]* M3 R# D
    df=0.25;                                     %所需的频率分辨率,用在求傅里叶变换
    3 `, X2 H* B; _" t) g%                      时,它表示FFT的最小频率间隔$ N1 m" X. Q" A# J
    %*****对调制信号m(t)求傅里叶变换*****
    # T0 y: X$ U- \$ {* m/ p. ~m=am*cos(2*pi*fm*t);                         %原调信号* T! r) W( i6 w/ e+ b( h  ~
    fs=1/ts;, s; C3 q$ J* M+ g7 ~
    if nargin==2
    * l# C1 Z/ T# i- \+ @3 w* j4 g6 _    n1=0;
    $ K9 \5 \" n" W# j" h' ~else" q0 I/ \$ i4 \9 ~! m" ?5 M
        n1=fs/df;
    / U/ O8 f. f0 C/ @end
    ' s0 s/ B- j  o! E  ?n2=length(m);
    6 o& i, v% p8 E# i" gn=2^(max(nextpow2(n1),nextpow2(n2)));
    / C& `/ [0 d6 m2 ~) R: U1 TM=fft(m,n);4 u% S, a6 D5 z7 ^- G! v2 i
    m=[m,zeros(1,n-n2)];( D! J! r# w- d0 x
    df1=fs/n;                                   %以上程序是对调制后的信号u求傅里变换/ Q. S5 j" E1 d& F4 O
    M=M/fs;                                   %缩放,便于在频铺图上整体观察
    7 j" \2 e7 |% {; y. qf=[0:df1:df1*(length(m)-1)]-fs/2;                %时间向量对应的频率向量+ T; K9 c; i6 u3 x' m

    3 \/ P! ]1 u& y# q%************对已调信号u求傅里变换**********
    ! m7 }$ t; p% l- tfs=1/ts;. F( b+ s' g5 X; V  s8 M; a
    if nargin==2
    ) X6 H& m) }) R) v% X4 ^    n1=0;
      C* H: ^+ h' A1 ?2 D, melse
    , b; F+ s- X, T; y/ `    n1=fs/df;0 n: K, G! T9 m' @8 @, d
    end, q9 i, O6 [3 U
    n2=length(sfm);9 W# b1 V' |  w; h. c
    n=2^(max(nextpow2(n1),nextpow2(n2)));
    4 k# e  j6 N: B" I; _U=fft(sfm,n);
    % }3 a3 b. @6 ~+ {+ O2 |; Ju=[sfm,zeros(1,n-n2)];
    + H0 S5 c. @% Y7 Odf1=fs/n;                                   %以上是对已调信号u求傅里变换
    & n) d6 m5 _/ U$ m! s1 a0 Y, nU=U/fs;                                    %缩放; r/ ^3 L; Z) B0 Q
    %******************************************; ]1 S. p) s8 e# p/ F: M+ @
    %*****************************************
    , r' y; J) ^/ h9 E: G/ n/ N%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·# n. ~- d& F1 K% x" [
    %***************显示程序******************
      ^0 ?- W% K, g9 L- t' q# @disp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')
    ) q$ V5 V! m) g: Ppause
    ) P) C( y" B5 \' {%**************figure(1)******************  r7 W) \) Y7 E) V, S# a' _
    figure(1)/ {* y1 g6 o. F8 ?- B* h2 l4 w
    subplot(3,1,1);plot(t,mt);                                 %绘制调制信号的时域图6 x3 I* _5 r, J$ G
    xlabel('时间t');4 `1 ^1 n3 C* t" E/ s6 _' ^
    title('调制信号的时域图');
    0 ?3 j/ B% V7 O) J& r& Z. Fsubplot(3,1,2);plot(t,ct);                               %绘制载波的时域图: W; e/ A9 k% d9 B3 Q
    xlabel('时间t');
    ! r3 N0 H) K! ]% A) C% @5 T; C5 }title('载波的时域图');0 F# h$ i0 c/ j$ U# K9 J  o
    subplot(3,1,3);" R2 s; W4 N) Y1 m9 Y) S  W
    plot(t,sfm);                                                  %绘制已调信号的时域图) P8 H, j/ S& ~
    xlabel('时间t');
    ( I' X' |8 B! w2 H2 L6 mtitle('已调信号的时域图');
    4 x' I$ f) r- Q1 g/ S( ^%******************************************- E% J  P7 Q1 D! g! t6 `' s
    disp('按任意键可以看到原调制信号和已调信号在频域内的图形')
    3 l2 S  T' S5 N6 f4 M& Dpause
    1 m' A8 G0 H, A$ f%************figure(2)*********************
    . f7 m9 ?- l9 E  _% C, Ffigure(2)
    / h) Y% `; \' ~, S1 _subplot(2,1,1)& P$ W. X: s# s% P' U( D
    plot(f,abs(fftshift(M)))                        %fftshift:将FFT中的DC分量移到频谱中心. z& s2 p; F! c8 H
    xlabel('频率f')
    ! _" j4 Z- X) n3 wtitle('原调制信号的频谱图')
    ! l$ y* }$ q3 z5 Psubplot(2,1,2)
    2 p1 ~: X0 s" splot(f,abs(fftshift(U))): b4 v5 @1 u" ?8 J
    xlabel('频率f')
    - h$ R& w9 o" x$ L; h6 {title('已调信号的频谱图')$ h$ i1 Q# f) L+ G2 S
    %******************************************' P( V1 ^8 _3 J1 v- H9 [3 x4 U
    disp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')
    2 E& \5 `) Y; u* o5 }" b* v; u( ~pause* O2 m8 ^* }& Y; K
    %**************figure(3)******************9 m: K0 K  S$ h9 i7 H% |% s% c
    figure(3)! h7 R0 {+ L! w2 ~! U( P# D
    subplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图/ {" o4 T7 p4 G1 j& A
    xlabel('时间t');
    + X) V2 E8 U& n4 |title('调制信号的时域图');
    + _% \0 u- u, M. msubplot(3,1,2);plot(t,sfm);                              %绘制已调信号的时域图
      ?. l) i$ x2 ^xlabel('时间t');4 m8 y& v, w+ K; y" f
    title('无噪声条件下已调信号的时域图');, ]0 y+ K* D7 @, p
    nsfm=sfm;                              
    9 U! }$ |, s5 q5 a: s# kfor i=1:length(t)-1                           %接受信号通过微分器处理
    . Q9 x* S6 }3 q/ U/ s    diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;& q- A! @7 v5 E4 b; P+ g, D2 T
    end3 L8 x# q, j, l& ]) D) T
    diff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)) l' m/ j1 s  d; g
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    ' y! k. D2 v( q, y9 B- I" bdiff_nsfmn1=diff_nsfmn-zero;
    1 R' R0 D  a: }* O( Hsubplot(3,1,3);                             %绘制无噪声条件下解调信号的时域图
    % e; a3 I$ t9 f- i' a" q3 @' Hplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
    $ G- Q, a9 F6 N- ~3 zxlabel('时间t');                          
    & }1 B! |# B& R; `' k) ~9 Rtitle('无噪声条件下解调信号的时域图');- c) e) s1 Z# r
    %*****************************************
    1 L; u6 U* s! ~; Zdisp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
    8 ]6 z& d' ]5 V: x9 q7 `- rpause2 @8 E2 i8 j) q# U3 ~6 x
    %**************figure(4)******************
    , U0 E0 z9 c* W* R7 u; Vfigure(4), ], E! k6 y1 v$ `- z5 V7 K
    subplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图' F# J& C" D/ n- M
    xlabel('时间t');
    2 i& X' U+ Y7 j# T: [" S6 Btitle('调制信号的时域图');
      u5 w% W/ H- F& Tdb1=am^2/(2*(10^(sn1/10)));                   %计算对应的小信噪比高斯白躁声的方差: Z7 Q8 x9 @7 k+ b3 ^4 j9 l& y
    n1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声
    # p1 Q6 M8 Y' T- u& ~+ ?nsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通
    : S  I, r$ k6 y4 E6 r+ X5 }5 w%                      %过信道传输)
    0 G, v) ?) a' }# Kfor i=1:length(t)-1                            %接受信号通过微分器处理( @2 p5 B$ K  A5 J8 `2 z8 x
        diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
    * v% ~$ A* R2 B6 r: Lend
    . @# F$ ?6 j; P; q, E3 w9 fdiff_nsfmn1 = abs(hilbert(diff_nsfm1));   %hilbert变换,求绝对值得到瞬时幅度(包络检波)  F/ l  b8 I  Y: t) G
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
      ], N  Z; ~8 s! F9 n6 Ndiff_nsfmn1=diff_nsfmn1-zero;/ F* E0 ^, n4 [) i& ?
    subplot(3,1,2);) r/ `& e6 B% {( o% l/ X( F
    plot(1:length(diff_nsfm),diff_nsfm);      %绘制含小信噪比高斯白噪声已调信号的时域图
    : L9 J7 Y, x9 M4 ?8 K$ w6 ^6 |/ kxlabel('时间t');
    ) r5 l/ o' d- g5 Mtitle('含小信噪比高斯白噪声已调信号的时域图');3 V$ ^; L; G" C, s; E# U
    subplot(3,1,3);                        %绘制含小信噪比高斯白噪声解调信号的时域图
    9 @# ]" [* J6 i: Z( }- hplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');7 ?8 q& T  n' V- `
    xlabel('时间t');                          
    - L' @1 x% K" A8 r. l' Htitle('含小信噪比高斯白噪声解调信号的时域图');
    5 B4 ]8 N- @4 F3 o1 o  {% |%*****************************************
    9 I2 A. I6 s' f  qdisp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
    ) v7 G6 d: j- ]# o7 h2 `pause
    - s* C7 {* Q1 u%**************figure(5)******************! D/ e2 [. S1 \6 L6 J, |% c0 G
    figure(5)# [! P& Q( g$ p9 [, O$ [5 k
    subplot(3,1,1);plot(t,mt);                                   %绘制调制信号的时域图; e! d5 z" e  ^" b
    xlabel('时间t');
    4 F6 k6 Z; ^, x" E$ Wtitle('调制信号的时域图');
    ( F+ f  K9 y3 W" f, G+ ddb1=am^2/(2*(10^(sn2/10)));                   %计算对应的大信噪比高斯白躁声的方差
    ) I( {0 q' k% o% n7 q* b; h4 m. I" tn1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声
    ( N" Z  d' t; }) w0 C9 Q  h* Znsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通过信道传输)
    # ]( H* G% }$ d5 M* I, R4 ffor i=1:length(t)-1                             %接受信号通过微分器处理
    . \1 C/ k  D( }. D) ?, r    diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
    ) {( w) p8 h. Zend6 a2 \& V4 o. X: ~7 y/ Q0 b& Q1 J
    diff_nsfmn1 = abs(hilbert(diff_nsfm1));            %hilbert变换,求绝对值得到瞬时幅度(包8 f+ b5 x0 Q+ d" Y5 z7 A; k
    %                      %络检波)* M+ D' i0 `2 T+ t: C
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    1 j- r3 a& v4 |- o" Xdiff_nsfmn1=diff_nsfmn1-zero;' D( j6 l$ ^5 l4 v$ d3 ~
    subplot(3,1,2);
    , x' b4 w6 U9 g% pplot(1:length(diff_nsfm1),diff_nsfm1);             %绘制含大信噪比高斯白噪声已调信号
    " M; Q+ u# [0 U. g%                      %的时域图6 q) r+ r/ r" T3 ~8 M+ }+ O
    xlabel('时间t');; U6 o* c: b2 h) m- R3 |
    title('含大信噪比高斯白噪声已调信号的时域图');
    " y7 o) V2 x' P- usubplot(3,1,3);                                %绘制含大信噪比高斯白噪声解调信号
    & `6 d! U2 I4 @5 G$ }%                      %的时域图8 j8 U3 j* O. r3 @1 m" N$ h+ b0 F
    plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
    # r+ L2 f- I4 c3 ]$ s. Exlabel('时间t');                           
    ( {6 k3 }) g" Q/ U, `" e9 Ptitle('含大信噪比高斯白噪声解调信号的时域图');1 Y  C) x, M( v+ x* e( A/ x
    %*****************************************
    ) `5 y& P8 f) _& p6 m- H%******************结 束*******************8 j" C3 J. n) e- C. ~2 v- _

    2 m7 i7 F  {7 t6 Q, |
    2 Z# s5 U6 l8 b) g5 D4 R1 r+ R
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    李秋锐        

    14

    主题

    14

    听众

    76

    积分

    升级  74.74%

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

    [LV.4]偶尔看看III

    社区QQ达人


    : C$ B4 I7 o( x& T. X% W0 c- U( P3 Z( ?: }# T$ T

    ) V: B- @# `3 J。。。。。。。。。。。。。。。
    , U" m. I; X4 r4 }% t
    + ]( z  v4 Y% G: J2 \9 _) j
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2025-6-30 09:34 , Processed in 0.425941 second(s), 58 queries .

    回顶部