QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2136|回复: 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调制解调系统.m5 j/ ^  h$ c  u  d# n
    %频率调制与解调的Matlab演示源程序
    ( I" d( a% C( m- n%可以任意改原调制信号函数m(t)
    0 l1 P% b( H3 ~4 Y%电子信息工程  杜怀超 091308305  
    + t, i4 \4 Q4 t- F4 Z%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    * b' x+ l' J- @: [* v% t5 h%*****************初始化******************7 y- @$ X. V/ j# S
    echo   off       : u1 N# b. [+ _4 Y: v) e/ n
    close  all, E7 L1 L5 ~1 n  ]8 S1 e0 @
    clear  all9 ]; `6 |" F* i" X& V# [
    clc- t/ G1 u" C% m# p7 l* k, z, e
    %*****************************************
    ' y. l% `+ L) ~# X%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·. D' _2 _  z" o2 R& Z9 }( B, i
    %****************FM调制*******************; h# r: j# ?& F5 U3 ?$ H
    dt=0.001;                                   %设定时间步长2 x+ o4 E1 f1 {4 L* F: e7 Z  r
    t=0:dt:1.5;                                       %产生时间向量" m1 q: M0 Z# _3 A) K) q1 _
    am=5;                                      %设定调制信号幅度
    + E+ h7 z, Q$ D3 ]- z6 sfm=5;                                      %设定调制信号频率- ?6 L; t$ V6 q' ]0 D. e
    mt=am*cos(2*pi*fm*t);                        %生成调制信号+ t9 h+ v& _$ H0 p& N
    fc=50;                                      %设定载波频率
    / o& H6 F8 ~* p3 G" l) b! G. |ct=cos(2*pi*fc*t);                             %生成载波' ?) r% m/ W0 d6 P2 x4 u# @1 R
    kf=10;                                      %设定调频指数
    / F& N: T7 E+ Aint_mt(1)=0;9 j$ _5 l0 m9 e7 e' H7 r
    for i=1:length(t)-1  ; c# T6 f1 b" N( ]% Q/ P& N
        int_mt(i+1)=int_mt(i)+mt(i)*dt;               %求信号m(t)的积分, u2 C1 k+ ]3 m8 P3 N! g4 Z) M0 X
    end                                          %调制,产生已调信号$ k& w; D0 Y1 L$ Y1 t, V
    sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt);            %调制信号
    . n: i* s& D  f% W, Q- e%*****************************************
    9 ?8 h" ?- e) c, S1 M. L%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    , w1 \% A- H  K% }%*************添加高斯白噪声**************' h" P- c2 I( c, @  W* C
    sn1=10;                                     %设定信躁比(小信噪比)! h8 r! N- p& w2 E- O8 f
    sn2=30;                                     %设定信躁比(大信噪比)
    0 `" `% S3 v# Vsn=0;                                       %设定信躁比(无信噪比)2 Q# [7 Q9 d! l- _" ^: H8 x; d
    db=am^2/(2*(10^(sn/10)));                     %计算对应的高斯白躁声的方差
    4 \( T1 i' F: J. gn=sqrt(db)*randn(size(t));                      %生成高斯白躁声7 q/ v" {' J- B
    nsfm=n+sfm;                                %生成含高斯白躁声的已调信号(信号通7 Y. @2 N9 ?" _- G
    %过信道传输)
    . s& ^3 ]6 g+ K0 r8 ~%*****************************************( Y( q. Q8 [3 ^) C) `0 c2 o$ @" {3 i3 J
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    ' u/ y1 O/ x* e, F$ d%****************FM解调*******************
    0 Q% Y" \/ t9 m. C9 h( e+ dfor i=1:length(t)-1                             %接受信号通过微分器处理
    & F. l  o# U1 R4 c5 v/ {    diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
    ( o" L2 C1 Y( z1 Cend
    # k" `- q6 x3 l5 l5 v0 idiff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)
      F, p" s, Z2 ]! j3 k; Hzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;' H* g5 C. j0 V# h5 g6 h) e
    diff_nsfmn1=diff_nsfmn-zero;  ~7 t5 h, k8 G# ]% T4 d
    %*****************************************; x/ X1 L$ ^  P/ n3 g% h9 k
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·- {5 Z! p* D1 e3 f, v4 i
    %**************时域到频域转换*************** ?0 Q* s6 j$ B8 U( _
    ts=0.001;                                    %抽样间隔
    - k2 k' S, H) ^7 b" Ofs=1/ts;                                      %抽样频率& c9 [: X; n( @8 T; ~5 H
    df=0.25;                                     %所需的频率分辨率,用在求傅里叶变换
    . q8 Z( K* [1 I) T: Z%                      时,它表示FFT的最小频率间隔1 j* ?: \3 K# S! t- n+ r
    %*****对调制信号m(t)求傅里叶变换*****' u4 G0 o' b; _' S# ~
    m=am*cos(2*pi*fm*t);                         %原调信号
    - A( H" @0 }3 E! N  F, M. x/ mfs=1/ts;
      x# I( U# A: ?$ ?2 }# n$ `6 |/ J; o, Eif nargin==20 D' o. a3 s/ z/ C3 x2 N5 m
        n1=0;
    * B- O2 p8 O. Ielse
    9 w( ?, d, S  D, A3 l% N  b    n1=fs/df;
    7 L5 B: \" @. a0 o: ?/ Iend
    8 X# \" ]- E, j4 T4 k: pn2=length(m);$ Y5 U% Q8 e1 |- }6 H- |* j; Z: x
    n=2^(max(nextpow2(n1),nextpow2(n2)));
    1 |0 @7 I" A% {9 g1 b- x3 PM=fft(m,n);
    ) a  Q. O1 j4 Hm=[m,zeros(1,n-n2)];
    9 `5 p& P# t& M' r: v! N; Vdf1=fs/n;                                   %以上程序是对调制后的信号u求傅里变换
    / V6 ~2 p! W' V% j2 ~  T) l% kM=M/fs;                                   %缩放,便于在频铺图上整体观察; a9 ]! t# E) M
    f=[0:df1:df1*(length(m)-1)]-fs/2;                %时间向量对应的频率向量. n! _" X  \3 V7 L4 S. `
    , p' R( l, g! t1 d0 t, p
    %************对已调信号u求傅里变换**********( L. o3 w7 R8 B+ S" f: P: f& X+ C% ~
    fs=1/ts;9 z9 w" g# m( }
    if nargin==2
    " J; H  S; u$ c, F% T. F    n1=0;; |7 X8 [9 ~- q5 l, l0 f! e' f
    else- q% o( {* c/ P5 J2 H
        n1=fs/df;! f( h" P" d) T; S0 j$ q: |: T9 b
    end% l/ W' z6 a, F( o; X, Y8 n4 y
    n2=length(sfm);
    4 N. p% P: }- D5 un=2^(max(nextpow2(n1),nextpow2(n2)));
    ' {' p: a6 ?( b( r3 s5 Q8 V! Z. p6 EU=fft(sfm,n);* U7 C' E6 U+ C) y, D: P" f
    u=[sfm,zeros(1,n-n2)];' o9 `; I$ B- q7 e0 y
    df1=fs/n;                                   %以上是对已调信号u求傅里变换
    ( i( E. f- N0 `U=U/fs;                                    %缩放2 T9 R' L5 p6 a
    %******************************************
    # \( E" u! J0 r, m6 t1 `$ Y%*****************************************' ?+ ?# E9 N9 q. |
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    , t( C, i6 o0 Z1 x7 O%***************显示程序******************
    " S! e/ x0 h' w3 Udisp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')5 b& r5 F# t6 j6 j2 X: g
    pause: }- e4 `! }3 f% A7 D7 T1 Y
    %**************figure(1)******************/ I; f3 d( E2 n. E$ f
    figure(1)& |! |5 \  @: W9 V0 }
    subplot(3,1,1);plot(t,mt);                                 %绘制调制信号的时域图
    - e0 b9 O9 a# |xlabel('时间t');
    , l; `3 N2 N: c# G7 b5 n, ntitle('调制信号的时域图');& [+ _$ _; v' S3 X2 d1 o
    subplot(3,1,2);plot(t,ct);                               %绘制载波的时域图+ {4 n( K% w! g
    xlabel('时间t');3 D5 ^* A! n. e9 S  C+ G
    title('载波的时域图');
    ( y' g1 [7 V8 h& L( [subplot(3,1,3);  e# L; \4 ]- [& P% _3 E
    plot(t,sfm);                                                  %绘制已调信号的时域图* M# |, n- r, O+ Y  D* r
    xlabel('时间t');
    ! I/ F, f, z0 G' R0 @8 `7 I! Utitle('已调信号的时域图');5 i7 W6 {7 X, a- e5 r5 P, O
    %******************************************0 h! q2 B( y' p( U6 Q
    disp('按任意键可以看到原调制信号和已调信号在频域内的图形')
    3 H9 V% h! D0 S% \. c4 e6 \pause
    $ j2 w! x8 r! y1 C- ~9 T5 f+ E%************figure(2)*********************1 H- l, m4 h, v
    figure(2); C; H8 i, Y: r$ N; ]1 A0 X
    subplot(2,1,1). J0 C! R' p6 P; p- A
    plot(f,abs(fftshift(M)))                        %fftshift:将FFT中的DC分量移到频谱中心$ N! B7 Y0 H2 M2 R8 p. t
    xlabel('频率f')
    : @! X% q3 J6 p) P; f  W" vtitle('原调制信号的频谱图')
    : u: R! L" h4 H. I/ u, wsubplot(2,1,2)
    5 l. F2 O9 [. j3 ~( Z7 f2 y( qplot(f,abs(fftshift(U)))
    4 a% |- l/ ?0 T" j+ G% @- f+ nxlabel('频率f')$ W+ e1 a* X# V$ e* v. x3 |
    title('已调信号的频谱图')+ C4 a2 q5 n7 ^
    %******************************************
    1 S6 _: s5 m5 g/ {disp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')& w& B& d0 o. V+ Q+ d% I
    pause
    ) ?. k" J9 `0 i( P! }7 G; B5 v%**************figure(3)******************
    ; c# J, ^; W8 I0 \) g  g2 ~' Vfigure(3)
    6 ?- i& |- ]) V0 C. f/ Msubplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图6 Z4 b5 m! r& ~& w
    xlabel('时间t');
    ! \) g+ }5 O! |% x6 x5 rtitle('调制信号的时域图');
    2 z" H' e+ v! l2 M4 O2 ]2 gsubplot(3,1,2);plot(t,sfm);                              %绘制已调信号的时域图2 r3 H: j" F+ @7 ?# }
    xlabel('时间t');
    4 p% a5 @8 L, o4 W' b7 s# ~" Etitle('无噪声条件下已调信号的时域图');
    . V7 C3 k0 T2 A) o9 n. e2 Insfm=sfm;                              
    % P0 R' F$ I; f& G; ^& t! L* [for i=1:length(t)-1                           %接受信号通过微分器处理
    ( ^4 ^0 @% u+ g    diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
    ' U/ ^# H6 x- M$ y$ O' [9 E9 lend
    9 e: g! G8 g5 ]+ l9 a7 ]/ C. Ddiff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)% L6 u2 j4 c5 C* ?
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;; i" M9 b4 t+ X6 s; P
    diff_nsfmn1=diff_nsfmn-zero;- E+ Y; u/ |) p5 P) o, \; b2 j
    subplot(3,1,3);                             %绘制无噪声条件下解调信号的时域图' f+ H" N5 d  e, }
    plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');+ L/ h1 O/ S; [( h7 S
    xlabel('时间t');                          : X; b; r- n+ c" U# @
    title('无噪声条件下解调信号的时域图');
    0 R6 S) p6 C1 F, ?. X%*****************************************
    5 x5 Q- h  A: p% pdisp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
    ) U! w( r( `8 L4 ^8 G* D0 x1 O) vpause
    5 q! {( j* M7 s( p- g%**************figure(4)******************
      W( q1 o2 h6 J. r( V% j/ _2 hfigure(4). v4 t, V! X& X  D6 e# @
    subplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图9 o- |0 k4 R; |( e. A3 j3 ^8 @
    xlabel('时间t');
    ) r$ K- s9 w) O  Z! l; X+ Otitle('调制信号的时域图');
    / l2 C  H' f3 H# h: p/ `db1=am^2/(2*(10^(sn1/10)));                   %计算对应的小信噪比高斯白躁声的方差
    ; E6 i' ]5 g) c- ^/ o3 D$ Fn1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声4 Y. S) l; a! I  V- f( A1 T
    nsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通) j  X4 M6 f" X# p. E
    %                      %过信道传输)/ p/ D6 O) f( {8 P  K1 L6 G$ b4 J
    for i=1:length(t)-1                            %接受信号通过微分器处理
    9 k( j- X, o3 f7 E8 J, i    diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;. N2 y# S5 m8 L2 L
    end
    # Q& M8 _# F6 U4 e" sdiff_nsfmn1 = abs(hilbert(diff_nsfm1));   %hilbert变换,求绝对值得到瞬时幅度(包络检波)7 D4 N. z! m; @6 R6 |+ @
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;* R. j; ~- D1 P% f
    diff_nsfmn1=diff_nsfmn1-zero;# z9 Z  C( E+ h( ?7 y
    subplot(3,1,2);  _+ T: f% H# N# B
    plot(1:length(diff_nsfm),diff_nsfm);      %绘制含小信噪比高斯白噪声已调信号的时域图
    7 F- X. z, t$ A/ i! v  U" exlabel('时间t');
    . w* n/ E! P' W" dtitle('含小信噪比高斯白噪声已调信号的时域图');
    0 U' I( |/ O1 r' e: N# Q% ~subplot(3,1,3);                        %绘制含小信噪比高斯白噪声解调信号的时域图0 m; l1 ^* W7 ^% k
    plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
    # t- t, A# D0 E, S! Z4 W( y  ]/ vxlabel('时间t');                          
    % l: w$ b. N% s4 w5 y; a7 Ltitle('含小信噪比高斯白噪声解调信号的时域图');7 e! P& f  \; D6 G8 {" u- j
    %*****************************************
    2 y4 y1 y) I/ k, udisp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')# I. q' O8 S( `
    pause# T# m" I. r: Z$ f3 e
    %**************figure(5)******************
    % T. F* O) _( P1 Z8 x5 w4 ^figure(5)# u6 P; O3 K# X
    subplot(3,1,1);plot(t,mt);                                   %绘制调制信号的时域图; t% F1 I& f8 `7 K4 z8 B
    xlabel('时间t');
    5 w& ?% z$ n( R3 Ltitle('调制信号的时域图');
    2 \1 L; }2 l2 Kdb1=am^2/(2*(10^(sn2/10)));                   %计算对应的大信噪比高斯白躁声的方差# u4 @5 P3 s8 {% n  P/ W
    n1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声
    2 t3 F# b( U. K1 b7 }) W& U7 @nsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通过信道传输)
    " |( r9 M1 W: c6 z, tfor i=1:length(t)-1                             %接受信号通过微分器处理
    ' ]( }! U$ t7 L3 R    diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
    * G; y' b6 p+ i, j9 Oend
    7 Q+ K8 s- X9 C" M* m( X* K2 Hdiff_nsfmn1 = abs(hilbert(diff_nsfm1));            %hilbert变换,求绝对值得到瞬时幅度(包3 L; T7 d' n# j3 D$ L
    %                      %络检波)4 E) k; c( Z3 u3 K  N% Y. L
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;) S- s: K! I; D
    diff_nsfmn1=diff_nsfmn1-zero;* A. b* D% C) z( C# h
    subplot(3,1,2);
    6 r+ t. t6 {4 t  I: j! ^0 w5 \plot(1:length(diff_nsfm1),diff_nsfm1);             %绘制含大信噪比高斯白噪声已调信号
    ( ?& j4 y% w/ e% A; B$ e' b%                      %的时域图' g9 h; ?  r+ `
    xlabel('时间t');
    & f1 F8 W# p+ k7 U8 etitle('含大信噪比高斯白噪声已调信号的时域图');
    ) C; T# T% N0 y9 h8 gsubplot(3,1,3);                                %绘制含大信噪比高斯白噪声解调信号
    # F2 e7 i3 p; t/ A( H, b%                      %的时域图" M( g4 n) M* K* J+ ~8 p
    plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
    / }- z8 B" q4 T9 |xlabel('时间t');                           
    # F; o- d$ e+ t& v9 n5 \) T$ ~title('含大信噪比高斯白噪声解调信号的时域图');" b5 D3 i( q6 n* r, A& j
    %*****************************************9 R" V  [" j  @3 L" V
    %******************结 束*******************
    9 J% w$ ~8 V# @" `5 u% \& y! K0 b
    3 b" |9 E0 z7 d4 u2 |5 o9 A+ S) ~
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    李秋锐        

    14

    主题

    14

    听众

    76

    积分

    升级  74.74%

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

    [LV.4]偶尔看看III

    社区QQ达人

    5 q/ R  y2 ]: G$ V( T# T0 Q, G8 V
    $ r2 e$ h% q  @; d# @$ [

    ; R) V, X# `8 n6 J1 P。。。。。。。。。。。。。。。
    9 @5 M, O" M- q; |& s
    : T- N. x9 v0 r% j
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-6-15 07:21 , Processed in 0.443008 second(s), 59 queries .

    回顶部