QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2164|回复: 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
    9 D# l& f- P! F% L3 a0 y%频率调制与解调的Matlab演示源程序# i7 q: M+ l/ i" D
    %可以任意改原调制信号函数m(t)
    - K4 Y8 N! S+ x# [5 B%电子信息工程  杜怀超 091308305  
    : f. d- @! Y4 U# m# w/ G6 p%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    ) W" z- o; |' P6 S%*****************初始化******************6 c0 U) j. s# G% H
    echo   off      
    1 ]3 j; D# B% f$ }close  all
    8 a- h+ V" h5 U. ?clear  all
    . v6 V5 a. v3 V0 Mclc+ g/ d! r0 ]; m. {* Q
    %*****************************************2 z3 `. I' n2 [% X2 h
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    " y: q" k. w) Y, ]4 K%****************FM调制*******************
    . D4 h  o! X4 i6 K- Cdt=0.001;                                   %设定时间步长
    " V4 z; t, V% D; e/ P4 zt=0:dt:1.5;                                       %产生时间向量# c0 g4 x2 d+ j3 X+ Y
    am=5;                                      %设定调制信号幅度
    7 E! g3 B3 w$ dfm=5;                                      %设定调制信号频率7 D1 ^/ Z$ X4 w& X# T+ k/ d# U$ A
    mt=am*cos(2*pi*fm*t);                        %生成调制信号  D4 Z6 D+ ?9 i" ]
    fc=50;                                      %设定载波频率5 K9 E8 Q8 }0 t5 K' q' S
    ct=cos(2*pi*fc*t);                             %生成载波9 @; _8 \: B" O2 R0 r( _9 J
    kf=10;                                      %设定调频指数
    0 Q' b- }8 I0 ?( Q8 `: uint_mt(1)=0;- g" B$ y5 ^, S. h. W7 V2 {
    for i=1:length(t)-1  
    3 j) H1 `7 ]) \4 Q* M+ F    int_mt(i+1)=int_mt(i)+mt(i)*dt;               %求信号m(t)的积分, R  s/ P+ y* K/ @' S' A1 _
    end                                          %调制,产生已调信号) C% D- _& a& ]: b  G
    sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt);            %调制信号- x1 P6 x6 N9 Z) `, |
    %*****************************************
    ' E- w) X+ q, U. I%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
      Q5 Z7 |6 g4 {- E" i%*************添加高斯白噪声**************- q' G  r  P6 o+ }; ?( U0 n
    sn1=10;                                     %设定信躁比(小信噪比)
    $ [4 K% f( n+ osn2=30;                                     %设定信躁比(大信噪比)
      l' A, L+ l" O+ Z% Bsn=0;                                       %设定信躁比(无信噪比)7 [3 e2 \7 l5 f, z  i; e
    db=am^2/(2*(10^(sn/10)));                     %计算对应的高斯白躁声的方差( L( P% x  K& r1 M& D
    n=sqrt(db)*randn(size(t));                      %生成高斯白躁声
    , J! Y) E' [) @- }" qnsfm=n+sfm;                                %生成含高斯白躁声的已调信号(信号通9 W: w1 {& Q- J9 R* S- V
    %过信道传输)) l* O+ W% ]: i9 b7 r* w; U; {
    %*****************************************# H! \& t5 w6 I! L( _* `
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    % T6 \, k4 f& c# I+ z" }& x%****************FM解调*******************
    / B# D& k" W. yfor i=1:length(t)-1                             %接受信号通过微分器处理
    ( U  `! A! j% ?, l    diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
    6 V2 A4 p6 \0 {1 h8 [: \end
    , C" ^% }. K* w2 T7 D" J) V4 Z/ tdiff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)
    0 @& N, Y, }6 G! J8 q' Tzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    ) S2 e0 `0 q- D3 ^% Z2 rdiff_nsfmn1=diff_nsfmn-zero;
    6 A1 }* U" d  Q6 c5 {; x: u%*****************************************9 K. N  q- ^2 [( n5 T1 V4 S4 [
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    # C; e4 Z8 W* S/ R%**************时域到频域转换**************
    ; }9 `; N$ E0 U7 pts=0.001;                                    %抽样间隔
    * [+ U6 n, M6 d) h- [: u/ q  |fs=1/ts;                                      %抽样频率
    , o- T0 `; _+ pdf=0.25;                                     %所需的频率分辨率,用在求傅里叶变换- A8 ~) s8 N6 f' n: \3 H; c- m0 x
    %                      时,它表示FFT的最小频率间隔; }7 G6 O: H( l" N# w
    %*****对调制信号m(t)求傅里叶变换*****
    2 G3 ^0 D9 B+ F5 ~  im=am*cos(2*pi*fm*t);                         %原调信号$ y( }, a7 P5 Z" c% d
    fs=1/ts;
    : i$ _( C6 X$ w1 D3 l" ?( L5 tif nargin==27 l/ P( j! @( _# t9 j8 b5 e6 u' [
        n1=0;
    & ?7 Q" L4 Q9 r! y  Gelse8 d3 a( u* K" p2 w4 {3 x
        n1=fs/df;, m. _" a7 a$ Q2 A5 r, ~0 m  F8 x
    end- d8 w) s: t% r1 H! P
    n2=length(m);  Y* A( y0 K6 X' z3 a
    n=2^(max(nextpow2(n1),nextpow2(n2)));( Q' P( n. \- \9 g% B: x
    M=fft(m,n);, \2 `2 A5 P( ]2 V& X2 L- e
    m=[m,zeros(1,n-n2)];
    % J& {' a9 M% H- r" e- \df1=fs/n;                                   %以上程序是对调制后的信号u求傅里变换& V# H9 A( t" t6 J, l2 N
    M=M/fs;                                   %缩放,便于在频铺图上整体观察8 v: I5 c2 t* S4 [7 p8 u: D2 w
    f=[0:df1:df1*(length(m)-1)]-fs/2;                %时间向量对应的频率向量. ^! t* x" ?8 y8 V1 r: V

    7 n4 T9 q% z% K1 Y. G- I  }" R%************对已调信号u求傅里变换**********
      h: J% a# [: M/ v1 c  ]  H& u* Jfs=1/ts;3 }( Q8 V* R$ J8 K  F- C' X
    if nargin==2
    ( w! p- H- @4 _9 {' l* `    n1=0;
    $ n2 y; U; M/ O3 h2 Nelse
    & e: R2 C; \7 E    n1=fs/df;
    5 F! Q& T6 w) ]  xend( S* r5 j3 a8 p- U! m
    n2=length(sfm);
    7 B# q' ?( `% C# @" _" Qn=2^(max(nextpow2(n1),nextpow2(n2)));! @2 V, {! G$ ~: ?& Z& X
    U=fft(sfm,n);. t3 n/ X7 i2 V" `2 e
    u=[sfm,zeros(1,n-n2)];+ c' ?+ A; y4 ~" U  @
    df1=fs/n;                                   %以上是对已调信号u求傅里变换# X+ f; k2 O! K0 C; f/ ]9 D6 q
    U=U/fs;                                    %缩放6 Q9 W# i: R7 T
    %******************************************2 a% z0 g, y2 Z1 Y/ J
    %*****************************************: I8 r7 I; G! b- s0 h' O. k# |* U' G
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    1 H3 u8 T+ }$ i# n3 F%***************显示程序******************
    , Y% {7 B: ]; j; ddisp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')
    + x2 h8 Z0 B. X, Mpause" B- I, a$ o" P4 z: R4 A
    %**************figure(1)******************+ q# Y6 P/ g* k( S$ M9 B
    figure(1)
    % U0 z$ H. \0 D$ b0 h# T! lsubplot(3,1,1);plot(t,mt);                                 %绘制调制信号的时域图
    / E/ B0 v! \$ O$ y+ |% Vxlabel('时间t');
      |0 c. d7 {8 Y1 U6 j& Jtitle('调制信号的时域图');6 u9 w6 Q+ T8 _( i' O" O5 a" E
    subplot(3,1,2);plot(t,ct);                               %绘制载波的时域图, N4 @) o1 \) J7 L3 l
    xlabel('时间t');
    . q: ?+ \% C) J8 v: [, Y* Vtitle('载波的时域图');
    ( g  [: G: S5 ssubplot(3,1,3);0 q# C  G1 l5 ?
    plot(t,sfm);                                                  %绘制已调信号的时域图1 P6 y5 T) T( U" q+ P
    xlabel('时间t');% T" u9 I, f. @& B. J
    title('已调信号的时域图');
    7 q& X/ ?& ~* C* g1 g, M%******************************************
    9 j$ \, M8 u+ M8 T! `0 ^; cdisp('按任意键可以看到原调制信号和已调信号在频域内的图形')
    8 T8 E6 `. e9 M- z0 L. h! a7 rpause
    1 \) @  a2 F9 s/ a% Y%************figure(2)*********************
    7 x4 ?2 L6 C8 hfigure(2)
    # ]; N. V* g: y+ n" u6 i7 qsubplot(2,1,1)
    ! }$ ~( E8 x+ _3 C4 r3 [% j# lplot(f,abs(fftshift(M)))                        %fftshift:将FFT中的DC分量移到频谱中心$ f& z+ T% d& E* l5 {3 U
    xlabel('频率f')4 }& b  ?" M8 ~9 d1 _: q, e
    title('原调制信号的频谱图')7 |( J" B$ u# C1 A) x! N: W
    subplot(2,1,2)0 R% m3 a6 m' F- \/ a
    plot(f,abs(fftshift(U)))
    . n6 F5 }- A& Q6 r+ Bxlabel('频率f')9 m# M* f; V3 y( v  i4 [, U+ j& E
    title('已调信号的频谱图'); W/ D( V$ d; e# s
    %******************************************+ ^7 u/ r! s$ M$ K' ^7 {
    disp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')) p& R* s! X6 @% N
    pause- y, G* u6 c( |9 [; m, k
    %**************figure(3)******************
      o% ]# t! d; p/ A1 ]8 m7 ~5 Mfigure(3)
    * {! b; I0 z  H! y$ C3 q: Qsubplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图
    3 P6 `4 d' C( ^8 w, a! R" lxlabel('时间t');2 t0 q, M* B- G7 F, e$ Y/ z6 s+ A
    title('调制信号的时域图');
    9 r! Z! T% K0 Y, \/ O/ |0 V' @subplot(3,1,2);plot(t,sfm);                              %绘制已调信号的时域图
    % X; Q1 F6 U  W8 x; ]  u  ^xlabel('时间t');
    5 k* }1 b+ T" Y: W* c  T( Ttitle('无噪声条件下已调信号的时域图');
    ' o' [! g2 z+ l, i$ s' Wnsfm=sfm;                              
    1 A1 W8 r/ C2 Y( x5 t3 Kfor i=1:length(t)-1                           %接受信号通过微分器处理# S# S1 p# y0 n& {* z
        diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;) u' |9 @+ J  B  P
    end  x8 c; i8 L9 e# U; \! X  f
    diff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)
    5 E1 \* h! \, s) d+ H0 z4 Xzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    6 x8 C0 Z' u2 Z, ~2 s& f( T2 ldiff_nsfmn1=diff_nsfmn-zero;
    7 L6 a) I) i/ F0 s- o2 Hsubplot(3,1,3);                             %绘制无噪声条件下解调信号的时域图8 H0 k) S, w" g
    plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');# h4 i) S( A  S5 T: y
    xlabel('时间t');                          * e& f, s5 U7 ~9 L  T5 w5 p
    title('无噪声条件下解调信号的时域图');: Q, K7 P2 z" j3 v5 r
    %*****************************************
    + `0 `, Z# N) j% N& N4 f/ B2 H: ?disp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')0 n% |0 d9 _& I
    pause
    , D1 J8 u. Z2 |0 ~( ]% E%**************figure(4)******************, B! B6 i9 T6 ~; w& `! [0 ]
    figure(4)
    * H, g6 O7 H0 R+ W) e0 Psubplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图6 P9 X8 N& z! f
    xlabel('时间t');9 \* ~! l: m) ]! s
    title('调制信号的时域图');: @4 j+ p/ i  `! p# `$ ~2 F" T" }
    db1=am^2/(2*(10^(sn1/10)));                   %计算对应的小信噪比高斯白躁声的方差& A7 x0 ]9 P* ~8 P. Q. b! n( k
    n1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声. e' C3 j' k9 R
    nsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通
    1 v) M+ t4 k; ?%                      %过信道传输)
    * G4 G6 l0 D2 X2 wfor i=1:length(t)-1                            %接受信号通过微分器处理3 z7 `/ n+ l0 c% O5 ?
        diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;1 A: h% c% L+ N8 {) S* a
    end
    ) A+ L2 g, r. i( @& h) rdiff_nsfmn1 = abs(hilbert(diff_nsfm1));   %hilbert变换,求绝对值得到瞬时幅度(包络检波)9 j  r# x- x) U  G9 l" @; A* N
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    , O8 g; H4 U7 {  C# O$ t* K# Zdiff_nsfmn1=diff_nsfmn1-zero;0 d' |+ H( n" Y
    subplot(3,1,2);
    & J7 `6 C& m7 c2 Bplot(1:length(diff_nsfm),diff_nsfm);      %绘制含小信噪比高斯白噪声已调信号的时域图
    8 ]7 Z; H6 j' I7 txlabel('时间t');9 J$ y6 y5 u; h" {
    title('含小信噪比高斯白噪声已调信号的时域图');8 D$ T# t0 w- H
    subplot(3,1,3);                        %绘制含小信噪比高斯白噪声解调信号的时域图# E7 h' _( t; D; b
    plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
    ) k' y) g) J( X$ B! D) S) fxlabel('时间t');                          " K% r9 @  _: W$ p, C
    title('含小信噪比高斯白噪声解调信号的时域图');
    $ B. n/ T: a: f7 b$ I%*****************************************0 m% M2 i# E8 V9 E) G/ X
    disp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
    $ R: g- o) x9 @. C. `$ S, o( `pause
    : W  G7 X( z% W' l# L2 y  I%**************figure(5)******************
    0 |# N1 X( T. j$ V; Yfigure(5)/ T% q/ C4 G- H9 g- c3 @7 x
    subplot(3,1,1);plot(t,mt);                                   %绘制调制信号的时域图. k* ~: X# L' N) V: W
    xlabel('时间t');
    # L; |, o2 i' F) N5 l* t/ \title('调制信号的时域图');. M$ @; z7 g" z1 g- b6 K% @' {
    db1=am^2/(2*(10^(sn2/10)));                   %计算对应的大信噪比高斯白躁声的方差
    3 h6 Y& }" O5 @0 v) S9 mn1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声8 f: Z5 }4 ^+ K, }& W6 I
    nsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通过信道传输)
    0 q. Z6 t7 o! Z; I5 x$ Yfor i=1:length(t)-1                             %接受信号通过微分器处理4 s$ S- ~' w4 k" C; h- W: @
        diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;- c" D) K8 C+ \
    end- {1 ?8 T+ n3 \$ M8 T& s
    diff_nsfmn1 = abs(hilbert(diff_nsfm1));            %hilbert变换,求绝对值得到瞬时幅度(包7 L$ I* c9 U8 k
    %                      %络检波)( k6 g+ s1 X. o4 W" u8 x+ U. N
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;8 F4 {1 M* t, y/ k
    diff_nsfmn1=diff_nsfmn1-zero;, l# M- c& v5 \9 a
    subplot(3,1,2);9 U3 j' M# l6 ^& \" |) t( X$ O
    plot(1:length(diff_nsfm1),diff_nsfm1);             %绘制含大信噪比高斯白噪声已调信号
    7 Q/ y. _8 }- J* C/ A%                      %的时域图2 k7 R/ ?! A. S6 g- ^' F6 @' \
    xlabel('时间t');6 [! Y% I* Y1 z2 v1 ~
    title('含大信噪比高斯白噪声已调信号的时域图');
    1 }; h# ]+ q0 ^1 [" x. E  ]subplot(3,1,3);                                %绘制含大信噪比高斯白噪声解调信号/ d, B1 ~' M) s& z7 U( D) t
    %                      %的时域图9 {- l! `" T% M1 Z0 R, T/ L
    plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');' r: O) W- d6 b% }3 T0 z
    xlabel('时间t');                            , e' g* ^4 s: T) t/ H+ P) J6 o
    title('含大信噪比高斯白噪声解调信号的时域图');; T9 W9 S1 S: [8 R. a& O
    %*****************************************: |; V& |7 q' L* I
    %******************结 束*******************4 l$ T2 M* t1 g9 x4 K  K

    " Q" K: \" _( a% @5 R3 n/ F% `$ ~# M* Y! Y* p
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    李秋锐        

    14

    主题

    14

    听众

    76

    积分

    升级  74.74%

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

    [LV.4]偶尔看看III

    社区QQ达人


    % A/ D8 @# b/ q; k! z& {$ s3 ]  c
    9 W9 b% `; ]1 L: P7 w" t4 p: M/ p  w( |, Y) W6 q5 u/ m
    。。。。。。。。。。。。。。。
    , J! P0 j+ I- Y. M( c+ S5 ^% R
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-7-30 21:21 , Processed in 1.480597 second(s), 59 queries .

    回顶部