QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2242|回复: 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  i/ @% s) s: e
    %频率调制与解调的Matlab演示源程序
    ( z, F) s. I- {; a, Q5 ]%可以任意改原调制信号函数m(t): X" d8 v% G8 C7 y+ h' X! |! {
    %电子信息工程  杜怀超 091308305  & }, G  I7 p; A; @% Q& `7 @, U
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    ; ~7 \/ v/ y; W%*****************初始化******************
    : w6 @1 M- S: H/ ~  D4 w! jecho   off      
    5 [( s: Q' G, L" X" [close  all# V) M3 J# X( m
    clear  all- I/ }) @, F# x
    clc- P4 o+ M1 @& ^7 _
    %*****************************************
    1 d; K5 j7 O$ A* G: w( @9 b%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    $ ^& U2 M  c1 V" I+ ?" f9 U%****************FM调制*******************. o- B- k" Z7 n/ r# j" {$ T
    dt=0.001;                                   %设定时间步长. Z  z1 I% |$ ~' A; F
    t=0:dt:1.5;                                       %产生时间向量
    2 w- C$ n2 X& O& z9 B( kam=5;                                      %设定调制信号幅度) U# O' [# o) Y+ n
    fm=5;                                      %设定调制信号频率7 l3 B$ ^) ]( U6 \! S! U5 n# ?
    mt=am*cos(2*pi*fm*t);                        %生成调制信号
    % ^% u* s2 e% T% D9 pfc=50;                                      %设定载波频率8 G' ?/ F' g% G! j: C% o
    ct=cos(2*pi*fc*t);                             %生成载波
    ! W# |: c, l9 A& f& I' Z& a2 \9 n; \kf=10;                                      %设定调频指数
    : V! b  r3 o  D. jint_mt(1)=0;
    , b/ B/ ]! v7 U# K+ P5 D. cfor i=1:length(t)-1  - h. N. R* p0 a
        int_mt(i+1)=int_mt(i)+mt(i)*dt;               %求信号m(t)的积分3 l  M& L; ]* y1 Q
    end                                          %调制,产生已调信号- |( E) ^, p  w& G& f+ S! q
    sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt);            %调制信号
      [9 L9 R" [, U' j4 D; j%*****************************************
    4 Y" N; y* k9 g5 _%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·; n: k1 ?# {& F
    %*************添加高斯白噪声**************
    ) `; h4 `, m- F) Asn1=10;                                     %设定信躁比(小信噪比)
    ' e, G& b+ W5 w$ Qsn2=30;                                     %设定信躁比(大信噪比)! _7 a7 G, K$ b. F/ j6 v. O6 q
    sn=0;                                       %设定信躁比(无信噪比)/ B& D2 b3 L. U0 w; L' O
    db=am^2/(2*(10^(sn/10)));                     %计算对应的高斯白躁声的方差
    ' s: n* t8 k8 `4 k2 f& L4 fn=sqrt(db)*randn(size(t));                      %生成高斯白躁声9 D4 x$ J3 y7 d" M% W$ l
    nsfm=n+sfm;                                %生成含高斯白躁声的已调信号(信号通" C  l% h) V: [0 g4 ?9 D% g$ V
    %过信道传输)
    " N6 ]+ C2 w& w5 ?. y$ f%*****************************************- `6 d/ e; R5 Q% h/ q9 O
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·: O' q' q; g. G2 }- v$ d
    %****************FM解调******************** l0 H# s% a! O& F; ?; ~0 H
    for i=1:length(t)-1                             %接受信号通过微分器处理
    : H8 N# v3 Z2 b. n& @( P, Y& W    diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
    " [( ^0 D5 [8 n. U& e: ]0 r, ]end
    4 r4 U2 y9 [( E( x3 w) M) n+ wdiff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)
    4 s& M' G6 H. m$ l8 C) h1 g, T1 u; L* qzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    8 ]) s7 M: i1 _9 d; Q6 ]& @diff_nsfmn1=diff_nsfmn-zero;
    ' G0 A/ b) u9 f, _# v  ^; R$ I%*****************************************1 W# {2 E0 m/ ^! l, K
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    ) O# D1 t- b4 x7 t8 e%**************时域到频域转换**************
    4 l) S  a8 g, a$ p9 Kts=0.001;                                    %抽样间隔/ W6 b5 g5 A" z! i( H& `
    fs=1/ts;                                      %抽样频率
    ' I+ F/ T; S& ~! o3 B; t. B0 C$ Odf=0.25;                                     %所需的频率分辨率,用在求傅里叶变换3 B; y( r8 Z5 M  G: w, h6 u
    %                      时,它表示FFT的最小频率间隔
    8 d- k( F8 t) X( Z8 d* P7 P. L%*****对调制信号m(t)求傅里叶变换*****
    1 z1 P7 |, l6 S  d1 Rm=am*cos(2*pi*fm*t);                         %原调信号
    # w, `8 i+ V5 T" e% Afs=1/ts;$ W3 {9 S! A+ Y) w; g' [. w. Q
    if nargin==2/ `4 ?* M4 D. l* ~' `( q2 ~: Z* R
        n1=0;
    - p6 E3 T+ {) W' Q7 M  lelse
    : u) r2 l# J* A. W    n1=fs/df;/ _1 _1 h, i3 Z4 s* V
    end
    2 V+ i4 W9 w4 ]6 s3 K6 s6 An2=length(m);1 u3 T; T$ l( n; \: }' S' U: E
    n=2^(max(nextpow2(n1),nextpow2(n2)));
    3 g) p2 T6 M* @5 {8 F. WM=fft(m,n);  k/ ?" {! K! p: p5 j8 ~
    m=[m,zeros(1,n-n2)];% M( |& L( _+ C# q
    df1=fs/n;                                   %以上程序是对调制后的信号u求傅里变换
    7 F1 b2 b9 m/ a# A6 m6 B. aM=M/fs;                                   %缩放,便于在频铺图上整体观察
    9 u' |- O: U7 ^f=[0:df1:df1*(length(m)-1)]-fs/2;                %时间向量对应的频率向量
    6 x- _! M% D# W. E# g. v, g# |5 u) j& a- ?8 `
    %************对已调信号u求傅里变换**********8 ]% o# C4 _/ V% [# A7 b7 P  G: C6 }
    fs=1/ts;
    % ]! p* D: U! |' }" D5 |: P0 q$ K* lif nargin==2
    * p4 |0 d4 v2 p9 T. K  r  M    n1=0;
    ( d* Z) [, M: W9 E( e2 @6 Selse8 F( B# t6 @' W0 b7 ~( D
        n1=fs/df;0 m5 t. g' A1 H% j
    end
    " n2 g* J6 W% x7 l3 w  Dn2=length(sfm);# C* C2 _/ \; G5 l# g5 E2 e
    n=2^(max(nextpow2(n1),nextpow2(n2)));( g# A/ Q- ^( ?2 s, m2 h' P
    U=fft(sfm,n);* e& }) G2 E& I8 T
    u=[sfm,zeros(1,n-n2)];) H* u. T; `/ ^
    df1=fs/n;                                   %以上是对已调信号u求傅里变换
    ; M9 K8 W' z; B! j! u8 n% cU=U/fs;                                    %缩放# n' P+ ?: r$ k1 K7 E  o( N- t
    %******************************************
    7 x, S2 }/ M8 m. E/ L. q/ q%*****************************************( i3 ^7 q8 s$ T( e+ p
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·/ \6 ], j  ~) g$ w, ~
    %***************显示程序******************
    ! v, O2 }+ h! _* Tdisp('按任意键可以看到原调制信号、载波信号和已调信号的曲线'); p6 J; q6 z* [0 q( v( S$ J
    pause& k' f3 Y) X) B4 J& _  {; _
    %**************figure(1)******************
    # Z) S5 Z, J# x+ O# }figure(1)$ J! M: Y5 p* M
    subplot(3,1,1);plot(t,mt);                                 %绘制调制信号的时域图* t6 _0 m, Z: X$ C+ J
    xlabel('时间t');
    ; I; x( `5 O( ?. i' Ttitle('调制信号的时域图');. s1 O; a! A9 S% `; B8 Y. h+ n
    subplot(3,1,2);plot(t,ct);                               %绘制载波的时域图/ Q1 S( D1 T6 k1 Q& t, S8 H8 u
    xlabel('时间t');: R6 L4 g* t2 ?! F% r0 X% _
    title('载波的时域图');
    3 p2 W" n% }9 Q+ Q% i/ f6 [4 fsubplot(3,1,3);% Z- u4 ~. K$ T0 v1 C
    plot(t,sfm);                                                  %绘制已调信号的时域图2 q+ q9 B  n& ?, R; [. l1 b+ D
    xlabel('时间t');
    ( c, r; t1 Z# Q9 [title('已调信号的时域图');
    . }' |( j. s; v1 v%******************************************
    8 z) n& G' [% d5 Y6 `disp('按任意键可以看到原调制信号和已调信号在频域内的图形')4 |% [1 z( P  l
    pause
    ! b! \* b( I6 S4 a3 {) J. S/ Q%************figure(2)*********************7 d6 Y; f7 {/ J: i3 ?
    figure(2)& H) w3 d3 m6 ?& ^7 D
    subplot(2,1,1)
    , b+ v0 s  m7 S1 ~/ J. i  \plot(f,abs(fftshift(M)))                        %fftshift:将FFT中的DC分量移到频谱中心
    ! A8 k- E( ^) e. o, Fxlabel('频率f')! T/ y( A& M# E$ [! b( K
    title('原调制信号的频谱图')
    , V- v$ h3 l% b0 _1 Z- |subplot(2,1,2)* B# _9 I: o( y/ d
    plot(f,abs(fftshift(U)))0 ^' q# S- N1 d- p7 X6 a$ [
    xlabel('频率f')
    " n, r! J9 J+ P0 Q: [) _, stitle('已调信号的频谱图')& d# ^0 I& m" D+ L
    %******************************************8 H5 H8 @2 @1 a$ Z1 ?
    disp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')
    3 n" `5 Y, B4 }3 cpause
    1 X% g& l8 C* e0 [, |%**************figure(3)******************4 w6 I: H; X  K! S: J
    figure(3)
    1 d5 L5 T# i0 ^) H, zsubplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图
    # F* X. ]( D+ P3 J/ M: c' o+ ]xlabel('时间t');% T+ z. f" V- Q7 @) ~
    title('调制信号的时域图');
    + Q; X, P% o9 `1 isubplot(3,1,2);plot(t,sfm);                              %绘制已调信号的时域图
    ' k, g2 m3 {8 o4 e7 ^. q- [xlabel('时间t');; J/ g# a" X, _+ o7 ~9 k0 u( ?
    title('无噪声条件下已调信号的时域图');
    9 m+ ^8 c% [: `/ _, _+ Fnsfm=sfm;                              
    . j4 F2 T& ?9 Yfor i=1:length(t)-1                           %接受信号通过微分器处理* s, Z- [5 O3 \* U. O3 g9 {/ p7 D
        diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;/ I4 y* o3 l$ E  ?
    end
    - |% ~4 H! d1 c$ M0 |diff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)% P/ U- j5 [9 L/ K+ W
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;, z+ M0 M; _* X$ c) L
    diff_nsfmn1=diff_nsfmn-zero;9 G- ~, Q2 i2 K+ }! e4 S
    subplot(3,1,3);                             %绘制无噪声条件下解调信号的时域图4 v# i! |/ S! I5 v9 p/ H1 S
    plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
    $ y" g( z- s+ R7 G/ }xlabel('时间t');                          
    9 F  `( @. c; P$ N1 G% @5 dtitle('无噪声条件下解调信号的时域图');( i# q- H0 p$ f' J/ p2 q, L! H" |
    %*****************************************
    & U4 h) C0 x$ H- w- Pdisp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
    9 B: q* C2 u2 ~pause
    0 d# a+ v' P7 K+ U%**************figure(4)******************0 H* J5 I" I6 D3 k4 C
    figure(4)1 @$ ?9 F# q4 v6 u, R
    subplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图7 d5 P( {$ V+ w) }$ c
    xlabel('时间t');
    / Q4 x1 a4 ^1 ?* htitle('调制信号的时域图');
    4 L. |1 c; c2 M9 Q7 u; cdb1=am^2/(2*(10^(sn1/10)));                   %计算对应的小信噪比高斯白躁声的方差, E+ D: u4 T2 p8 x
    n1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声. K: ~& U3 |3 }/ ?6 K
    nsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通3 q$ y9 `( k# Y/ x
    %                      %过信道传输)* L/ j2 n* q+ ~7 i2 d$ w: A8 x
    for i=1:length(t)-1                            %接受信号通过微分器处理! V+ [3 b4 ~  }6 @$ L7 R
        diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;$ p& U, R) F. ~. ~* p% L
    end
    1 f5 d, {0 r: D7 \* r0 g/ P+ Ydiff_nsfmn1 = abs(hilbert(diff_nsfm1));   %hilbert变换,求绝对值得到瞬时幅度(包络检波)) w) O' k1 l) x/ c
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    + I9 D8 u8 {+ hdiff_nsfmn1=diff_nsfmn1-zero;
    & g3 d" Z1 a* Y  z/ Z2 hsubplot(3,1,2);7 u3 a5 n- }& T. o4 m5 o& f( h
    plot(1:length(diff_nsfm),diff_nsfm);      %绘制含小信噪比高斯白噪声已调信号的时域图
    6 C  k) K2 A/ b, v* d2 ixlabel('时间t');9 v$ x" d+ o8 P. g; C' W  t- R
    title('含小信噪比高斯白噪声已调信号的时域图');
    : T3 @' i- ^* gsubplot(3,1,3);                        %绘制含小信噪比高斯白噪声解调信号的时域图
    0 V" A: J3 }5 \7 {+ y  u4 \plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');$ v2 [! s' C8 x7 P
    xlabel('时间t');                          
    7 {9 Q% }* c: @) O. T; Dtitle('含小信噪比高斯白噪声解调信号的时域图');
    0 `7 _, Z; t0 _, p: u%*****************************************
    : O7 n. M7 n6 Sdisp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')  e+ g% @( F. K/ ]% e8 e( S. X
    pause
    5 {' \1 K# X( q" l4 W%**************figure(5)******************
    ; T/ X; i( X. z- h1 L& Y. |figure(5)
    9 ]6 K+ `! o6 a$ J% n& y' ?subplot(3,1,1);plot(t,mt);                                   %绘制调制信号的时域图( z- [5 B& F) V& e5 m
    xlabel('时间t');
    ! \( o- [0 A  y. c! ]title('调制信号的时域图');
    & Q% D# C& v( Y$ p) m; pdb1=am^2/(2*(10^(sn2/10)));                   %计算对应的大信噪比高斯白躁声的方差! s+ _+ U- g8 X0 V% R
    n1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声
    / X; \, G$ }; W3 |nsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通过信道传输)
    ! U1 P: T. V6 `1 m% w; kfor i=1:length(t)-1                             %接受信号通过微分器处理
    ; G: f6 }8 t: B2 ?. f' L    diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
    . g7 |" Q8 e9 b# L4 _/ f) N8 cend
    % Q: S" t: H6 W* Z2 x8 cdiff_nsfmn1 = abs(hilbert(diff_nsfm1));            %hilbert变换,求绝对值得到瞬时幅度(包
    ( r4 S7 t8 N  @% a2 T%                      %络检波); Z. X+ t& G- b! H" p
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    ' N" o1 G( m" i7 a, U" ddiff_nsfmn1=diff_nsfmn1-zero;5 S( `- R& b+ n- i2 a( Y) a# M( N
    subplot(3,1,2);4 E9 R* T& E  q: d4 c1 o
    plot(1:length(diff_nsfm1),diff_nsfm1);             %绘制含大信噪比高斯白噪声已调信号
    . o6 \. N2 ^5 J5 w1 C! @%                      %的时域图& |; |2 V0 Q. s# E
    xlabel('时间t');
    , Y2 a+ k$ u. L! f7 z% H* e; [title('含大信噪比高斯白噪声已调信号的时域图');
    : {) \5 t" q& `6 ?subplot(3,1,3);                                %绘制含大信噪比高斯白噪声解调信号
    6 f/ |4 V. [. ^* f8 ^( r0 |%                      %的时域图
    4 I6 X* h: n2 e5 q/ @5 Z1 Yplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');  q; U  S+ z! p2 f
    xlabel('时间t');                           
    0 o* z+ r, ^  b% B( W( `title('含大信噪比高斯白噪声解调信号的时域图');( k5 \1 s) q5 o
    %*****************************************
      r  A1 k2 m$ h& f%******************结 束*******************, G2 ^6 d# Y2 [4 O  V. L! @7 Y2 |
    ; U9 S9 I$ B8 a6 v, M
    9 }6 I1 l9 F6 |. k2 W) a7 C, L2 t! |
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    李秋锐        

    14

    主题

    14

    听众

    76

    积分

    升级  74.74%

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

    [LV.4]偶尔看看III

    社区QQ达人

    % n( m1 D2 ^) s0 Z' b4 y
    " t+ v5 G5 _3 P4 w0 i

    ; p. W8 S+ q) x0 c) r8 q, t。。。。。。。。。。。。。。。
    & t1 Z$ u, ^. a
    7 B! E# Q# b7 {7 y6 b& A
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-10-10 03:30 , Processed in 0.314524 second(s), 58 queries .

    回顶部