QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 1943|回复: 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( r) G( X, K" G  B: k
    %频率调制与解调的Matlab演示源程序
    + W  Y3 y& @: q4 M0 s$ Y8 G; Z4 J  ]%可以任意改原调制信号函数m(t)
    2 a0 W: M/ b1 `3 o! V) c* m" [%电子信息工程  杜怀超 091308305  1 l/ I  ~3 t" A7 @7 X/ n- M0 Z
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    4 @3 c- p, n7 H' @4 a* i%*****************初始化******************
    1 C+ R" F7 u5 @8 E! K7 [( b1 ?echo   off      
    ) u- F! `3 o7 lclose  all
    ) a- ~9 ]4 t; s$ Z" Aclear  all
    ' [1 k' d% r, f7 c+ L: e6 l7 Vclc  N5 ^0 z5 m0 w* e* P9 n
    %*****************************************" ^! h6 u( o. Z8 w' t$ W3 t! ?
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·0 K- j3 Y* S6 P
    %****************FM调制*******************
    8 t0 }; q& P# S7 H5 U% }: @' pdt=0.001;                                   %设定时间步长- q! r5 q9 U5 q" Z' U/ N+ w- A
    t=0:dt:1.5;                                       %产生时间向量% F. q1 S  o; `4 I) }
    am=5;                                      %设定调制信号幅度' G) M* b( J, t2 m. s! g, h% I
    fm=5;                                      %设定调制信号频率& t  X, J8 n0 ?  r; I( n
    mt=am*cos(2*pi*fm*t);                        %生成调制信号
    0 Y; T/ f  n' H5 w) x* T1 Nfc=50;                                      %设定载波频率/ Q- s/ I% z9 l: s8 f: }4 T, i
    ct=cos(2*pi*fc*t);                             %生成载波
    ' l) _- N5 y) W0 Z' Kkf=10;                                      %设定调频指数
    3 u- [" A  Z, J) J. g$ c6 O/ _  Pint_mt(1)=0;$ Q5 U* O: D* R0 X+ a! C7 G+ Z
    for i=1:length(t)-1  
    8 g" J# m- [7 N  K3 c( s& q    int_mt(i+1)=int_mt(i)+mt(i)*dt;               %求信号m(t)的积分6 v8 N$ y0 i' x5 m3 D
    end                                          %调制,产生已调信号
    5 n5 ~& ]. n6 Y/ g# Usfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt);            %调制信号" P0 o3 J, j  q2 X+ x- u
    %*****************************************
    0 O/ b1 h( M, G% Z% L+ Q%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·- g) [1 w3 B$ R) O
    %*************添加高斯白噪声**************
    1 {( i! |* N; i3 u! Psn1=10;                                     %设定信躁比(小信噪比)) w" ?. E. [* l' s: R
    sn2=30;                                     %设定信躁比(大信噪比)
    0 C" s$ H: g& g9 A0 d: N. b0 i  Lsn=0;                                       %设定信躁比(无信噪比)
    3 h0 ~5 ^9 M- r0 Mdb=am^2/(2*(10^(sn/10)));                     %计算对应的高斯白躁声的方差
    , f! {2 E  B4 p: Z8 I3 @n=sqrt(db)*randn(size(t));                      %生成高斯白躁声
    + b8 R6 F% w' b7 ], Knsfm=n+sfm;                                %生成含高斯白躁声的已调信号(信号通
    7 U# c0 s" |0 K%过信道传输)1 v3 H) G+ j3 m+ \, ^9 y4 c
    %*****************************************! B5 d6 Q1 m- H! K2 m* l
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·8 ]/ c( g  @" X3 J! u
    %****************FM解调*******************
    / m$ J- g2 g' a+ |- F. M* zfor i=1:length(t)-1                             %接受信号通过微分器处理
    5 Y( Q, J; c# X6 U    diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;/ f2 A. ~+ U& F2 m
    end
    7 e+ @+ W* D6 [5 R$ ^  Cdiff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)
    " G7 U9 Q" \* xzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    " o& k- B; Z% I( y$ Q" Mdiff_nsfmn1=diff_nsfmn-zero;. i$ u% D4 A9 c" q
    %*****************************************# t. M- t" V/ l
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·9 w# l: {. [8 x0 Q
    %**************时域到频域转换**************
    * W+ S9 e4 s, o  u  p, Bts=0.001;                                    %抽样间隔
    " ?- r2 v7 @8 \8 Hfs=1/ts;                                      %抽样频率. L) R* @- t9 D7 G% ~# P) m$ o
    df=0.25;                                     %所需的频率分辨率,用在求傅里叶变换
    & x( i: G. f$ z4 H%                      时,它表示FFT的最小频率间隔
    ' P3 A! Y& A# R" a& y  V%*****对调制信号m(t)求傅里叶变换*****, ?, P) d) M- J! K4 t3 \2 J
    m=am*cos(2*pi*fm*t);                         %原调信号5 w3 |% y( p7 K, s: g2 a* n
    fs=1/ts;
    4 G0 {3 t/ p4 [" z/ o8 h/ p8 bif nargin==2
    2 n9 o$ T7 H) F& O: x" g    n1=0;' x" A6 J" a1 [$ w' a7 _# J
    else
    $ K/ ?; \, U9 l0 ?5 A    n1=fs/df;
    ) x/ p1 ^; V5 f" J: G; N9 hend$ S6 G+ s. s" b. w7 o9 D% j
    n2=length(m);
    & a) Q. f1 v& D, }6 c3 ^n=2^(max(nextpow2(n1),nextpow2(n2)));4 n) _7 ~4 |) L! P- f
    M=fft(m,n);
    # m* [  \  K3 X0 Tm=[m,zeros(1,n-n2)];: D  m8 j. O  N# o: Q
    df1=fs/n;                                   %以上程序是对调制后的信号u求傅里变换
    ' i1 G2 F  ^* v4 cM=M/fs;                                   %缩放,便于在频铺图上整体观察; C* B, R; z* y0 z% s- a2 v7 y
    f=[0:df1:df1*(length(m)-1)]-fs/2;                %时间向量对应的频率向量
    6 n: W/ u# v0 f/ F/ j' D' I
    / r* C% l1 z& Z* u  a%************对已调信号u求傅里变换**********
    5 ^  Q' z3 l, `) f, K7 yfs=1/ts;8 n$ x- i; w! k. T4 y0 _% u
    if nargin==20 c( l' |- E% G+ D9 g
        n1=0;
    : H) j; Y; }, velse- s: e# T+ ^- C' m
        n1=fs/df;
      w( ]2 P( ?/ |: A8 F+ send
    ' e: S* _+ S% R1 en2=length(sfm);
    7 [- A- I/ Q( B0 A5 i6 s2 B: qn=2^(max(nextpow2(n1),nextpow2(n2)));
    " T' {, \8 o0 z$ q. N, C# Q" eU=fft(sfm,n);
    - s4 n4 Z( B0 O% e. h9 bu=[sfm,zeros(1,n-n2)];) [& B" l  y: M% g0 R
    df1=fs/n;                                   %以上是对已调信号u求傅里变换$ j' x9 y* T8 q8 l* z7 o3 u% ]
    U=U/fs;                                    %缩放: b7 @( ]: T8 p* W* Z
    %******************************************, ]& I6 G; r" h; J( D
    %*****************************************
    5 ]) [9 J; u: E5 c$ |%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·3 C6 X; Z" G- z2 A" v  o$ z" T4 m. \
    %***************显示程序******************4 ^$ ?1 h. K' J! ?
    disp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')7 M5 n% _/ x: w* w" [% n& F$ E
    pause
    ' H8 p+ O- U+ w, A$ o%**************figure(1)******************, t* b4 Z$ F5 _) _, Q, Y
    figure(1)0 K; e. G  D, x, c: T; w
    subplot(3,1,1);plot(t,mt);                                 %绘制调制信号的时域图4 y8 m* y5 u) A
    xlabel('时间t');- {# \* \3 }: K1 a( U4 ~6 L6 H
    title('调制信号的时域图');2 Q$ M  l5 {3 `; p: i; D
    subplot(3,1,2);plot(t,ct);                               %绘制载波的时域图8 B6 g5 ]9 r6 d& j* s9 h: T( Q( Z
    xlabel('时间t');/ B6 @3 P) `: Q; ?+ C
    title('载波的时域图');
    " }6 W0 V! L8 b0 K2 Wsubplot(3,1,3);. P0 W& f( {% ], Q% w; d0 @
    plot(t,sfm);                                                  %绘制已调信号的时域图+ W6 N2 T8 ^, J, ^( _. r/ L4 |/ @
    xlabel('时间t');
    1 S4 n* f6 Y. |title('已调信号的时域图');0 I9 O/ C; o0 V+ p9 @4 O
    %******************************************+ [# Y1 G$ a; i1 q
    disp('按任意键可以看到原调制信号和已调信号在频域内的图形')$ K- Z" s0 v: a( }8 [4 J
    pause: f. T$ t/ f$ Q4 {
    %************figure(2)*********************
    ( L$ P/ m/ p2 r+ F+ G" u  mfigure(2)
    4 G, p  e* T% Q+ I  [1 H: D3 Dsubplot(2,1,1)7 u) a% g, G, ]0 k
    plot(f,abs(fftshift(M)))                        %fftshift:将FFT中的DC分量移到频谱中心
    & t/ A. X- V' d/ n+ I0 yxlabel('频率f')* M3 u* B3 N0 ^- m3 Z
    title('原调制信号的频谱图')
    / O8 n- F. {8 ssubplot(2,1,2)! L% P* o: K% Y3 V3 h& O, b
    plot(f,abs(fftshift(U)))  w: K5 ]7 C+ ?( o5 D7 s% ^( p9 I( U8 G
    xlabel('频率f')
    5 V' F% O0 e% c6 i% g' T. htitle('已调信号的频谱图')
    ( f# A% I$ u$ V1 ~7 Y1 L3 e( B%******************************************
    9 ?% ~) O" h6 G( _+ Tdisp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')9 C! O5 w  F* C
    pause
    : {- a2 u2 q% D# \/ n%**************figure(3)******************  ^( S  {/ W1 d/ L& W" s0 N
    figure(3)
      }: s9 I) {* A2 gsubplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图* Y. S4 P' b! F0 w4 G( E- \7 T9 E
    xlabel('时间t');& q4 \; j+ K. [: [+ i. u
    title('调制信号的时域图');
    2 P: E4 m" ]/ N/ W4 r- ?subplot(3,1,2);plot(t,sfm);                              %绘制已调信号的时域图
    " F3 |: @) K1 r* ~5 ixlabel('时间t');
    " a/ n, c$ L. A- \& Wtitle('无噪声条件下已调信号的时域图');, X% |% S4 X( D) b- o
    nsfm=sfm;                              
    ) \2 J, s4 @; l% }; j9 q4 ~for i=1:length(t)-1                           %接受信号通过微分器处理
    ) H- ?/ K: D( v4 A1 e    diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
    4 |* t; {9 u% O+ x0 send
    9 |4 T9 ~: A; ]! qdiff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)7 K1 E- _, a/ S4 q: N- j
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;. ?0 j( V. Q; N" q3 t8 |0 [/ i" o
    diff_nsfmn1=diff_nsfmn-zero;6 L  w8 ]& z' k2 u8 q5 X% Y/ ~
    subplot(3,1,3);                             %绘制无噪声条件下解调信号的时域图
    ' W" s! h( y* p- w, t0 Eplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
    9 x) ~) U7 K2 C, kxlabel('时间t');                          
    % H; a0 d: C% ^title('无噪声条件下解调信号的时域图');! @8 y7 k! \' O% Z$ F/ O
    %*****************************************
    8 \( m/ ?" E: g% zdisp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')9 S) z0 `4 L4 T" ?* |. r
    pause
    - t1 ~% ]! V2 o# Q6 v%**************figure(4)******************0 W  n* T7 e7 Y$ @
    figure(4)
    ( `; c# U+ `+ g  Rsubplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图2 D# I3 ~. y4 b9 K6 R/ @4 K
    xlabel('时间t');' H5 k# J/ [/ p/ r  N
    title('调制信号的时域图');
    1 ?4 H6 {5 j- ]" z* Ddb1=am^2/(2*(10^(sn1/10)));                   %计算对应的小信噪比高斯白躁声的方差8 t& `: Z. u/ E& U% u
    n1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声6 |8 Q& b: t  B9 e. Z/ {. X
    nsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通& b( M' ~! Y0 Q# p" Q) \
    %                      %过信道传输)
    # f3 Z2 H3 v, j( W3 v* ^2 dfor i=1:length(t)-1                            %接受信号通过微分器处理
    ; v! z- ^& ]& y) K# l- v    diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
    * ^8 ?, Z+ ~: i% M( qend( C9 ^4 Z% X0 X, r4 S& s  O" U
    diff_nsfmn1 = abs(hilbert(diff_nsfm1));   %hilbert变换,求绝对值得到瞬时幅度(包络检波)
    6 G. ~' ^/ Q1 c% Y: L; r# dzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    3 `1 y" n, P3 Z. W2 D' `diff_nsfmn1=diff_nsfmn1-zero;9 N7 U) \( k8 E4 c! R
    subplot(3,1,2);
    . Q1 X* N" D0 G+ _- Y6 R) Y1 r: rplot(1:length(diff_nsfm),diff_nsfm);      %绘制含小信噪比高斯白噪声已调信号的时域图6 l4 t) z* P9 _
    xlabel('时间t');$ y7 A, M6 A( M8 p( s( Y
    title('含小信噪比高斯白噪声已调信号的时域图');
      \, G+ z# [" O% }subplot(3,1,3);                        %绘制含小信噪比高斯白噪声解调信号的时域图
    7 s9 I8 l% Q* s- ?plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');5 k2 ?1 k  X/ ?2 h
    xlabel('时间t');                          
    1 o' ?+ R  g& K# M: e) W1 wtitle('含小信噪比高斯白噪声解调信号的时域图');  D# {+ ~9 o: }9 D+ P. ~4 t
    %*****************************************
    . K) o$ _( l) {6 P- n( |8 Xdisp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线'): m1 }$ l) q, S5 ^" F) H' s; x
    pause
    - z9 d! r# Y" ]* _( j/ H5 `* ]( W%**************figure(5)******************4 V: t3 p- A% r
    figure(5)- z5 J- U6 C' G9 @2 C, ]
    subplot(3,1,1);plot(t,mt);                                   %绘制调制信号的时域图
    * p/ ^% F9 T9 O- r3 G9 H% K4 n1 z) Kxlabel('时间t');4 k, ~) t5 a$ H0 E9 }
    title('调制信号的时域图');3 ^( f& H% F, a: p9 E6 V) Q
    db1=am^2/(2*(10^(sn2/10)));                   %计算对应的大信噪比高斯白躁声的方差( I# O9 |) G0 x5 x; r: E& Y
    n1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声
    * ^& a' m" y* X! Xnsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通过信道传输)
    1 e  W- V; f9 L8 C; Mfor i=1:length(t)-1                             %接受信号通过微分器处理
    - A; M' V1 t& ^$ y" _, f" K    diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
    1 V  J& u  e8 j" i7 rend5 @6 G2 _( y' O  K
    diff_nsfmn1 = abs(hilbert(diff_nsfm1));            %hilbert变换,求绝对值得到瞬时幅度(包1 W4 [2 W: U# ^, B8 G2 D9 q
    %                      %络检波). N1 G4 J; V8 s" S
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;. ~$ G5 \5 k0 @0 T. F
    diff_nsfmn1=diff_nsfmn1-zero;
    " C: j5 R9 |; _subplot(3,1,2);
    8 o+ V/ e% D! s, d5 I5 ^9 J. ^plot(1:length(diff_nsfm1),diff_nsfm1);             %绘制含大信噪比高斯白噪声已调信号/ H- _: y* `8 q% ]) w4 B4 D
    %                      %的时域图
    7 U( v+ H2 |* c% d2 cxlabel('时间t');
    * n0 K6 M* E* P3 }' r# @2 htitle('含大信噪比高斯白噪声已调信号的时域图');4 _; n( k5 O/ g3 T  M
    subplot(3,1,3);                                %绘制含大信噪比高斯白噪声解调信号5 u: S0 o% C- ?' z( ^/ J3 U& m8 L
    %                      %的时域图$ r+ O/ Y& N! f/ s9 Y
    plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');1 I6 {8 O; e, i. Z8 [
    xlabel('时间t');                           
    ( t8 I8 ^* ^: N: _/ @8 r- ^7 Jtitle('含大信噪比高斯白噪声解调信号的时域图');
    ! r5 o9 D/ m# U7 j& Y2 n%*****************************************3 p/ m% R  @1 A/ q" n1 o
    %******************结 束*******************: ~. Z  F- W. X
    ( ^9 F( u; p  j7 A

    6 s2 S  L+ R, G' o2 h! Q# Q
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    李秋锐        

    14

    主题

    14

    听众

    76

    积分

    升级  74.74%

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

    [LV.4]偶尔看看III

    社区QQ达人

    * m' ^! i8 s0 f% h  g

    3 H% i$ o) z8 M
    : B; \9 p- G5 a。。。。。。。。。。。。。。。7 Z- H) p5 k& P! ^$ z, k
    , j$ Q! t8 w& H+ T8 X# a2 T
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2025-8-8 05:47 , Processed in 0.554705 second(s), 58 queries .

    回顶部