QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2146|回复: 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
    & b' f9 ?" `% t%频率调制与解调的Matlab演示源程序2 M$ Z, |- L; T: m9 W5 v, f
    %可以任意改原调制信号函数m(t)
    4 j3 r$ C0 t/ B%电子信息工程  杜怀超 091308305  
    ' p4 ~/ ?, {7 q4 R%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    $ U/ |5 K6 n" D! X/ o# @5 ]%*****************初始化******************- v4 l% U' l3 m4 J& Q
    echo   off      
    6 O! A& {4 G' E0 i/ v! `close  all' H( b. v4 y3 F% a, g4 h) M/ c% R! n
    clear  all  P/ I' V8 [; T/ ?
    clc4 x8 Q" d5 k) n: k6 U
    %*****************************************4 \  n2 n7 h$ O; g8 V1 ]0 p
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·$ @( P! P9 T0 J8 v- p' f' |  Z
    %****************FM调制*******************
    & U1 w/ q* _& z& W* y, y6 B- fdt=0.001;                                   %设定时间步长
    % d. P5 F1 w) bt=0:dt:1.5;                                       %产生时间向量
    0 p+ U/ |' k# }+ ^3 P( f) {am=5;                                      %设定调制信号幅度) T- b/ h8 Z# ?5 C- N5 n- o4 u: _$ j
    fm=5;                                      %设定调制信号频率5 p" A( b9 A+ t1 G6 O: @
    mt=am*cos(2*pi*fm*t);                        %生成调制信号7 |2 X6 ?/ c- i" S5 N" l; v4 x7 P
    fc=50;                                      %设定载波频率7 K% u  b0 Y# s5 }# J1 [
    ct=cos(2*pi*fc*t);                             %生成载波7 p9 Q  w& ~8 K3 F- M/ X/ E3 |9 R
    kf=10;                                      %设定调频指数
    / z" x6 ~  w2 R  t, v  Dint_mt(1)=0;" F8 U8 f) U6 f$ [
    for i=1:length(t)-1  
    4 _6 N, N0 G- K3 i1 Z8 B    int_mt(i+1)=int_mt(i)+mt(i)*dt;               %求信号m(t)的积分
    ) B) @) v% z5 `( B' yend                                          %调制,产生已调信号/ q+ g4 z" e; y4 c' t. u
    sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt);            %调制信号& Y6 b' v$ D* l
    %*****************************************6 e8 U7 \: t. p$ F
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
    ) A8 @+ O) t: K7 w1 r9 V  ~$ K% C%*************添加高斯白噪声**************
      r6 v2 O" O% D* x' i$ xsn1=10;                                     %设定信躁比(小信噪比)
    # J9 X  n, h: B8 \sn2=30;                                     %设定信躁比(大信噪比)& [. @7 [% P) d% ^
    sn=0;                                       %设定信躁比(无信噪比)( X) {) H$ P) S% i
    db=am^2/(2*(10^(sn/10)));                     %计算对应的高斯白躁声的方差
    ! N5 _" H, [! k3 D8 ~9 zn=sqrt(db)*randn(size(t));                      %生成高斯白躁声
    - _: D' C! I3 ^2 |6 W% Mnsfm=n+sfm;                                %生成含高斯白躁声的已调信号(信号通  P4 \5 Y; v8 m7 v7 f
    %过信道传输); R3 J# X, `& X: m, n( n; {3 D
    %*****************************************. b1 p! P( T$ l! w+ ]3 K
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·5 O: A3 [; p) W* b, k( c+ s* z9 w
    %****************FM解调*******************
    # T* M2 h! b& h, f% l/ V) K' p2 Sfor i=1:length(t)-1                             %接受信号通过微分器处理1 ^* |, @* O( Q
        diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;  g& b; L. e( k/ R2 P, [3 ^9 L( I
    end2 S' C5 J2 b- w/ x# ]+ d4 [( _- _
    diff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)
    3 m. _$ Y+ g! @% hzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    ( X- }7 X$ t/ Tdiff_nsfmn1=diff_nsfmn-zero;
    . w( ~: j8 w& P6 a9 f$ B%*****************************************& f, i% M( o6 d  d3 y* R
    %·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·- i7 {) ?6 Q$ ~& c( C3 p: B
    %**************时域到频域转换**************8 w! `* _( J8 v
    ts=0.001;                                    %抽样间隔; q, W+ d9 j# W/ o/ N5 C
    fs=1/ts;                                      %抽样频率) C8 b4 z# X, c; c% S: v
    df=0.25;                                     %所需的频率分辨率,用在求傅里叶变换
    1 j3 ~; i3 T& e! l9 d. P& E%                      时,它表示FFT的最小频率间隔$ k. c. O& l  {# m$ A- K
    %*****对调制信号m(t)求傅里叶变换*****
    : J6 O& i, M* k4 w0 t/ Wm=am*cos(2*pi*fm*t);                         %原调信号5 j/ o5 ]! A( r2 K0 N# ]4 l6 ~
    fs=1/ts;1 y! Y6 K" M$ k: k6 {
    if nargin==2: }, D/ H2 {# P' }
        n1=0;
    9 n! Q8 N( K) u& x$ v& gelse3 ?, L$ s+ Z# t' d  L" Q5 M8 \2 j* x
        n1=fs/df;
    9 `% o9 e* [/ u( G: N( W: ^) H2 x& Kend1 B2 `6 R5 v$ |) S
    n2=length(m);3 `) u: T3 f- N& _5 t/ [
    n=2^(max(nextpow2(n1),nextpow2(n2)));
    8 r0 ~" Y- T" K/ k& r* K; r6 p; HM=fft(m,n);3 ?* _( D* T. |% s6 {
    m=[m,zeros(1,n-n2)];
    2 a: ^$ u9 h* n5 Idf1=fs/n;                                   %以上程序是对调制后的信号u求傅里变换' T4 @: Z6 E  L2 C4 r
    M=M/fs;                                   %缩放,便于在频铺图上整体观察
    7 N' t' x/ I5 s$ O% w6 J& }: M/ Zf=[0:df1:df1*(length(m)-1)]-fs/2;                %时间向量对应的频率向量
    2 {8 Q5 P$ A- p
    . L5 o2 b; S9 J! u%************对已调信号u求傅里变换**********% I3 N$ }* ?6 N8 U
    fs=1/ts;6 T$ o  y2 U! ?1 r4 e
    if nargin==2
    . I/ O: ]% p. ?0 i0 Z    n1=0;
    * [. B9 v4 r: G! `, velse% Z# b+ U) p' ~- B
        n1=fs/df;: \4 c; q- w/ n+ m" u- Q4 G
    end5 k  [1 E! a- C9 x7 u" E( X' \
    n2=length(sfm);
    5 ^% o6 D: }5 |" An=2^(max(nextpow2(n1),nextpow2(n2)));3 R' Q' [3 b8 e
    U=fft(sfm,n);
    ( N3 K7 o% I0 S7 U1 Y; |8 ?  Pu=[sfm,zeros(1,n-n2)];. g0 P( y7 R' B' n  }5 C8 P
    df1=fs/n;                                   %以上是对已调信号u求傅里变换- t4 q+ R  L' ]% v4 O% o, P5 h2 v
    U=U/fs;                                    %缩放
    8 w) j6 A6 w2 O# O. {& K: J%******************************************
    . b  W: A: j  z%*****************************************
    ( q6 D: r, u: A4 F%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·  E* D" A% @/ E3 @7 B" w- O# W
    %***************显示程序******************, u# o8 O+ g1 V6 ~5 X5 r6 G$ e
    disp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')
    + [4 a+ G7 x9 ^3 s5 fpause5 E$ x3 |8 Q$ l3 r. @; E
    %**************figure(1)******************# K; O# O4 }9 h- i; Q, Z, f4 i
    figure(1)
    9 B) S8 E; z: z6 fsubplot(3,1,1);plot(t,mt);                                 %绘制调制信号的时域图& i5 G- T) S+ \' Y. B: E
    xlabel('时间t');
    $ G, W: V8 B6 X0 U. |. Gtitle('调制信号的时域图');
    8 ^: I, l- L2 w% O( e& _, bsubplot(3,1,2);plot(t,ct);                               %绘制载波的时域图
    0 C5 S( h- l7 ], M* P9 exlabel('时间t');+ d- M  y% M8 O( I  p: c4 t
    title('载波的时域图');; H' S) w9 h! g" o9 U$ @8 O! a: U) u
    subplot(3,1,3);
      c9 p2 V( D# h  Tplot(t,sfm);                                                  %绘制已调信号的时域图
    9 y) @! n2 r- M, s9 y. r2 r+ n( ]xlabel('时间t');
    # i* l$ ~( T' i3 v6 V3 Mtitle('已调信号的时域图');
    7 v6 q: C/ Y4 D+ b%******************************************
    1 c: X! M: A: z6 h( v" ], Kdisp('按任意键可以看到原调制信号和已调信号在频域内的图形')
    ; N! u4 g/ i7 Y/ qpause
    1 t+ K- W) u: W! N4 R" }%************figure(2)*********************
    ) T/ |# n; P! g4 q3 u2 Y* sfigure(2), j2 L0 B& |; M% b* h: g! ?
    subplot(2,1,1)
    : }2 w. I$ g3 O0 O) |plot(f,abs(fftshift(M)))                        %fftshift:将FFT中的DC分量移到频谱中心
    ! z6 L/ d# i: R9 v4 A3 kxlabel('频率f')' x7 \3 @! ]5 J% b1 d8 N
    title('原调制信号的频谱图')
    1 N/ M# }2 I% Ssubplot(2,1,2)
    8 T: c0 ?3 Y# D) y! kplot(f,abs(fftshift(U)))
    : ~, A4 h% {0 }6 |xlabel('频率f'). `/ a$ F) A. P' |! X( F! |
    title('已调信号的频谱图')
    9 p+ O3 T$ K0 r%******************************************6 S; _) i! R/ i2 C$ q* L
    disp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')$ E* l7 |: {6 ^; {8 E
    pause
    ) B, F! @, Z2 @9 f4 G%**************figure(3)******************0 |" w% e7 O" d: L$ Q( A7 n
    figure(3)
    / v3 h% z8 x" }- x2 a; b& e& L+ [subplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图. @* {* z1 g7 _/ i$ y: `
    xlabel('时间t');
    ; I0 v9 g. z2 o* A( t" Ctitle('调制信号的时域图');( C' u: j" S; {
    subplot(3,1,2);plot(t,sfm);                              %绘制已调信号的时域图
    1 j4 {* V- i7 a- z; q+ x0 G0 rxlabel('时间t');6 G) n: d2 B+ l: l& P) l
    title('无噪声条件下已调信号的时域图');
    6 [- e0 G7 p1 Q1 o1 b  X& bnsfm=sfm;                              - i( X3 k6 M4 K4 ~  B# n6 ]
    for i=1:length(t)-1                           %接受信号通过微分器处理
    ! N; L( P6 u( b, V" b7 D& s    diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
    4 s+ h- G8 D: [7 c0 m: Pend- f+ F$ M1 p- ]0 c
    diff_nsfmn = abs(hilbert(diff_nsfm));     %hilbert变换,求绝对值得到瞬时幅度(包络检波)
      a4 ]8 j; h. b+ D% `9 Jzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
    5 p9 M. P3 i+ g# O  x& xdiff_nsfmn1=diff_nsfmn-zero;# `. O5 R; R. c7 B! p2 r8 W# j
    subplot(3,1,3);                             %绘制无噪声条件下解调信号的时域图. F; T" _8 o& k; g
    plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
    / F" ~5 v5 i7 }0 Hxlabel('时间t');                          
    . f1 s$ @/ \3 \& {; I) Wtitle('无噪声条件下解调信号的时域图');1 ?1 z4 Q, u4 n+ h8 J5 K
    %*****************************************+ g$ h/ K& J" L
    disp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')7 G7 G, b& p8 H3 w: r9 \. s6 N  e* p
    pause
    ; Q: }" D7 i0 g) L# _8 H%**************figure(4)******************( U5 h+ f0 U/ j
    figure(4)
    2 K6 ^% }! F  Z7 Y& ?; B+ osubplot(3,1,1);plot(t,mt);                                  %绘制调制信号的时域图' [! T! {- K  j+ F  T% a  j
    xlabel('时间t');
    % G4 F: ~* ]8 d  W4 g! D$ }title('调制信号的时域图');
    + C7 r6 g1 X% W4 R: o$ G: w3 M+ R- I* J: Ldb1=am^2/(2*(10^(sn1/10)));                   %计算对应的小信噪比高斯白躁声的方差9 ^9 l% F* F9 ?# N* N4 d
    n1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声6 C+ w2 Z' {* ?: E1 \- J
    nsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通
    , d! j; M, ^0 A4 m) }%                      %过信道传输)1 h! [* P. i' J5 q
    for i=1:length(t)-1                            %接受信号通过微分器处理/ {/ D! z( S: j3 O% H; o- e  m
        diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
    6 ~# x! b) \" k. I) w, @, ^8 |7 Y% Send
    ! n* K. e7 v: ?  P% `- a& Ddiff_nsfmn1 = abs(hilbert(diff_nsfm1));   %hilbert变换,求绝对值得到瞬时幅度(包络检波). Q1 V3 ?: i3 `: g0 o' j
    zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;7 t! n0 i9 X' Q1 r7 s+ u
    diff_nsfmn1=diff_nsfmn1-zero;2 q+ F/ U0 k5 F# c: o5 f
    subplot(3,1,2);
    & V* W- q$ H* i- nplot(1:length(diff_nsfm),diff_nsfm);      %绘制含小信噪比高斯白噪声已调信号的时域图
    7 f. I# J/ @2 B! J2 R0 ~' K5 [/ a  ?xlabel('时间t');3 e2 ~" _2 j% _& n9 D0 O
    title('含小信噪比高斯白噪声已调信号的时域图');" v( g  d8 ~  g8 t* |
    subplot(3,1,3);                        %绘制含小信噪比高斯白噪声解调信号的时域图, E# {( u5 a7 C& ~7 W
    plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
    , G$ R2 ]& m" F6 Y* C: Kxlabel('时间t');                          
    ) s0 H! @+ T2 S0 xtitle('含小信噪比高斯白噪声解调信号的时域图');
    + R- Z9 j7 `4 r%*****************************************2 w" [; u/ o1 U  A4 T. b" k/ v- _1 }, R
    disp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
    ) g5 y* O( L5 J( xpause: g7 H* y) A+ @8 n" L0 d4 O+ {
    %**************figure(5)******************* w, T& B# ~; g& E) N% H
    figure(5)  `( F1 b, U' f4 G/ \: u; i- g
    subplot(3,1,1);plot(t,mt);                                   %绘制调制信号的时域图
    ; o+ {) r1 A7 G" U8 {% pxlabel('时间t');# U7 {/ |3 U2 B  ^/ G
    title('调制信号的时域图');
    9 x1 \  G/ t* s3 d$ bdb1=am^2/(2*(10^(sn2/10)));                   %计算对应的大信噪比高斯白躁声的方差* y, s- ^! l6 e- v! F4 X
    n1=sqrt(db1)*randn(size(t));                    %生成高斯白躁声; D, b3 p; F$ f8 o% X1 o
    nsfm1=n1+sfm;                              %生成含高斯白躁声的已调信号(信号通过信道传输)- A/ C: ~3 W# T3 S# b8 z1 K
    for i=1:length(t)-1                             %接受信号通过微分器处理; G) x- x( q- |% i( l
        diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;! o  |% C$ u+ S$ d, i- K
    end
    + `! K' R& D! ?/ J8 t6 cdiff_nsfmn1 = abs(hilbert(diff_nsfm1));            %hilbert变换,求绝对值得到瞬时幅度(包% \, y8 a/ D4 @! y! P
    %                      %络检波)
    & E2 ]) v9 }3 B$ \1 ?: Lzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;- ^/ Z) o2 Z! G- u/ u/ K# \& ?% Q
    diff_nsfmn1=diff_nsfmn1-zero;
    ) |$ T  y/ j* A6 b# ?4 Dsubplot(3,1,2);1 O# O% ~4 u  A: d( _
    plot(1:length(diff_nsfm1),diff_nsfm1);             %绘制含大信噪比高斯白噪声已调信号5 C* m4 ?! T4 ?' m, |7 \, x
    %                      %的时域图
    ) ]. R- L8 k; Q9 o1 p) y1 f# sxlabel('时间t');
      C; P! ?/ `8 Z3 i  ]( Ztitle('含大信噪比高斯白噪声已调信号的时域图');' H8 U; w  g1 G! m" x4 Q) f; I
    subplot(3,1,3);                                %绘制含大信噪比高斯白噪声解调信号. M: h3 c5 E$ `; S: g2 P. r+ j0 @* b
    %                      %的时域图
    7 v5 T- ?9 o* R0 X: }  ?4 L7 P$ Dplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
    6 j, o1 M6 }% _xlabel('时间t');                           
    ' {8 g) S* @9 I" W# w8 x/ i( V  xtitle('含大信噪比高斯白噪声解调信号的时域图');
      q: M" F! p/ ^) A  E6 w%*****************************************
    $ z$ {) \8 A4 F$ l1 X/ O%******************结 束*******************
    . V9 y+ e1 M! G! E- {, h1 `$ k4 L$ q+ C% s
    6 ?  ]3 V  N3 W+ n! \
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    李秋锐        

    14

    主题

    14

    听众

    76

    积分

    升级  74.74%

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

    [LV.4]偶尔看看III

    社区QQ达人

    & H1 t, g( c, Z$ V

    # l( v# E" `& D+ r% C
    $ w+ c+ ]% _9 ?" |+ b$ X, P* E。。。。。。。。。。。。。。。3 C" y  |- }: U! i* z2 b9 G

    " ]0 S' I# }) T8 \
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-7-9 11:04 , Processed in 0.473965 second(s), 58 queries .

    回顶部