- 在线时间
- 15 小时
- 最后登录
- 2016-6-24
- 注册时间
- 2014-5-13
- 听众数
- 14
- 收听数
- 2
- 能力
- 0 分
- 体力
- 158 点
- 威望
- 0 点
- 阅读权限
- 20
- 积分
- 76
- 相册
- 0
- 日志
- 0
- 记录
- 2
- 帖子
- 58
- 主题
- 14
- 精华
- 0
- 分享
- 0
- 好友
- 5
升级   74.74% TA的每日心情 | 奋斗 2015-3-29 18:44 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III
 |
%FM调制解调系统.m+ C) E' S, V4 o! v, Q5 @2 Q" m( i) y ]- Q
%频率调制与解调的Matlab演示源程序
! D( d0 k' ^; s$ s% Y%可以任意改原调制信号函数m(t)
2 }- A/ ?$ e, P%电子信息工程 杜怀超 091308305
* |+ u* n: G$ i5 V%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·2 l/ V3 Z: F( R
%*****************初始化******************
* n& K2 C9 G- o8 m' Z& techo off
. j9 s5 b8 @" Y7 d1 |1 ~! z Zclose all9 }6 r/ |8 J! T; Y `% [( q
clear all
2 o* e2 L4 h- a+ H/ |clc$ a# C( Z8 U& _
%*****************************************
. r- \" a% p$ [: x3 I6 E/ [1 B%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
4 V( N- U+ e2 Q4 \/ f1 W: G%****************FM调制*******************9 `( [; q! @; e$ E! G k) O
dt=0.001; %设定时间步长2 R0 U/ H2 w2 u" H6 k
t=0:dt:1.5; %产生时间向量
. m5 U- [, y; G! kam=5; %设定调制信号幅度5 M& c* [, X7 _$ `! C- p" h1 O0 i4 D
fm=5; %设定调制信号频率
0 |8 s Y- b! W1 g7 qmt=am*cos(2*pi*fm*t); %生成调制信号
5 o& v/ d5 v! V8 }" Rfc=50; %设定载波频率
7 Z8 G+ [) ]4 ?+ g4 O2 V+ @ct=cos(2*pi*fc*t); %生成载波
" J n) w# R1 P, S% [0 rkf=10; %设定调频指数
" ^+ G% M$ M$ L% S7 l+ u( Aint_mt(1)=0;
$ J. M* r6 c( M0 E- c8 Ufor i=1:length(t)-1 ' f: \# g) y9 i9 b) L
int_mt(i+1)=int_mt(i)+mt(i)*dt; %求信号m(t)的积分
b) X( G% ^" y: `( t8 \; s) zend %调制,产生已调信号
/ U% w; F3 r0 D: t. l, m' s5 y! ^sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt); %调制信号
* [: C; y' r4 O+ X%***************************************** v# x+ T1 f3 l- N( O. ?; l) v
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
% h# P, K8 X. y8 m; E%*************添加高斯白噪声**************3 t w+ K+ s# @+ f4 w
sn1=10; %设定信躁比(小信噪比)6 H w/ @& l% z2 |
sn2=30; %设定信躁比(大信噪比)
) [# C$ y# t1 qsn=0; %设定信躁比(无信噪比)/ Q- `: h9 p+ j$ j2 U
db=am^2/(2*(10^(sn/10))); %计算对应的高斯白躁声的方差( [( U+ e5 q# O( o: s4 S
n=sqrt(db)*randn(size(t)); %生成高斯白躁声
) n, u& f/ \$ g2 |$ `nsfm=n+sfm; %生成含高斯白躁声的已调信号(信号通0 \0 {1 o- _# M: n7 _. m) |
%过信道传输)$ x- j& m% ?: V* h; D
%*****************************************6 B* x. u* O! J: X
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·+ d1 ^* n* C; z, u. Y! f
%****************FM解调*******************% ^6 x+ y5 f0 A9 I% F6 e
for i=1:length(t)-1 %接受信号通过微分器处理8 {* a' b- J! Q( d: }
diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
5 D1 E. \, U" b1 n5 h) `& X# |& v( _end# g x4 J p7 ~% K; J) Q
diff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
7 p) c: N0 M, S; J% `/ szero=(max(diff_nsfmn)-min(diff_nsfmn))/2;1 Z0 @& h* y: w8 V) r+ Z
diff_nsfmn1=diff_nsfmn-zero;+ ^/ J, s) ?% b7 S) O* |
%*****************************************# Z7 O7 [. k1 b: ?4 L! h
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
% |2 m9 o/ ?* b3 P4 I( Z5 `%**************时域到频域转换**************4 K& h4 Z9 r$ e
ts=0.001; %抽样间隔1 F, a: j. `$ X& \6 r" W
fs=1/ts; %抽样频率
7 p+ W9 A# N) L+ e0 [& w# ^: kdf=0.25; %所需的频率分辨率,用在求傅里叶变换1 n- U4 T. v# k# A; J
% 时,它表示FFT的最小频率间隔
/ M% O3 O% t- a) ~0 h%*****对调制信号m(t)求傅里叶变换*****. P4 u& y# j1 u
m=am*cos(2*pi*fm*t); %原调信号
- X) y( v: R0 b O4 c7 x$ B+ F, pfs=1/ts;
3 a5 p" M' l) F5 S% K+ j/ J5 @if nargin==28 J( }# i( v' e0 b
n1=0;
" N, C, _$ P( Lelse
4 M, B+ T/ a; D! X n1=fs/df;, ` H* [5 E$ H7 I
end" p8 o; g; {1 n: _ H" J+ ?. l
n2=length(m);( i$ T8 ?! P. s+ [1 u" y7 ?
n=2^(max(nextpow2(n1),nextpow2(n2)));, k2 e& L+ |: W7 L
M=fft(m,n);* D% V# [- ^: G/ t" W1 T
m=[m,zeros(1,n-n2)]; m( Z9 P$ [4 b" B% {
df1=fs/n; %以上程序是对调制后的信号u求傅里变换
$ l% M5 s$ y. a0 r" j' N; C3 z, aM=M/fs; %缩放,便于在频铺图上整体观察
( H3 a! s# g( L5 h+ b8 kf=[0:df1:df1*(length(m)-1)]-fs/2; %时间向量对应的频率向量/ Z" R9 y9 a f, ^8 C n
6 C8 ?5 {1 h I( z3 h8 k%************对已调信号u求傅里变换**********
6 l' J9 w, i, p% Q, ]$ p9 l! Nfs=1/ts;( ~; [$ w6 G0 |5 L7 b: a
if nargin==2
4 n1 N: o0 Z! S$ Q n1=0;& ?+ d' v+ f! [ u0 {
else4 b6 C) }/ U( k- M7 F, W2 ?+ `
n1=fs/df;+ m& l# G5 a0 e( _
end! q1 n- a8 S! K* w$ j9 N' z3 a
n2=length(sfm);
6 F, \2 d" S' P# G1 F/ g E% bn=2^(max(nextpow2(n1),nextpow2(n2)));
8 e3 }7 H/ C9 S3 c0 \U=fft(sfm,n);. ?# c2 U& Z" P( i8 z+ {. x# n
u=[sfm,zeros(1,n-n2)];# `- L3 k: Q& x& I3 J
df1=fs/n; %以上是对已调信号u求傅里变换$ S6 l4 U2 N' x% W: [
U=U/fs; %缩放
3 J& d( ~8 G5 e8 v/ i5 }%******************************************
9 ~" k' D6 j/ a0 W% `%*****************************************
! a0 b6 A& j; y8 m1 q; T%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·" z+ C3 ]/ Z* j( I8 l
%***************显示程序******************, R$ m2 N- C( x& z. `' p1 L# h' _
disp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')+ f$ b! ? l' N# J Z
pause# L) Z9 o- |' h( b" T
%**************figure(1)******************
, f e) j" G2 [% @2 H0 \figure(1). |. ^! s: u' [. e7 R
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图- B r% q/ f( |6 a0 Z
xlabel('时间t');4 K9 d2 K' Y% K) Q! z
title('调制信号的时域图');
2 u& m3 N; _5 u6 `7 g; w) @subplot(3,1,2);plot(t,ct); %绘制载波的时域图
x* T* m2 s. B/ Txlabel('时间t');
% t" t; k5 i3 x* U" \. Etitle('载波的时域图');) ]7 O! n" C- u' |) r" a. @0 y( B, L
subplot(3,1,3);& [4 O4 v3 {6 S
plot(t,sfm); %绘制已调信号的时域图" T& r4 w& f0 n8 V; c7 Y/ _
xlabel('时间t');5 A' N6 E9 [9 `* O6 A# Q
title('已调信号的时域图');
# |( p2 u' [5 A: j%******************************************( E- `' x! @5 A/ J# m
disp('按任意键可以看到原调制信号和已调信号在频域内的图形'), n: q. @# @# S; k* X* }
pause
; }3 n2 f! o' V. q& r9 ~; k%************figure(2)*********************" F3 F. \3 @6 [& E2 Y
figure(2)
, Z5 S0 x& j, \, Ksubplot(2,1,1)
" {: Y8 [( @/ b$ Eplot(f,abs(fftshift(M))) %fftshift:将FFT中的DC分量移到频谱中心6 N4 ? C9 l& u* H
xlabel('频率f'), [; J9 n" u9 Z% i( ]
title('原调制信号的频谱图')
. H7 a! X6 [' b# lsubplot(2,1,2)
! n4 P8 c* @- k0 C& G# Oplot(f,abs(fftshift(U)))7 e5 _9 F7 ?+ t3 ^8 R& U1 s
xlabel('频率f')" }7 `. n/ L" |- K! {* o$ P
title('已调信号的频谱图')
7 z! h" o1 i( M/ N( Q. V: u%******************************************
% C: a+ v/ p% Q" S) Ndisp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')8 i+ @0 O7 @8 ^) S; _
pause
6 j5 m; K* o, t$ K%**************figure(3)******************
0 X ~! [, ]% J. [0 o0 Qfigure(3)( B9 X( t7 c/ e; E7 M1 Q
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
" f' `! c( Y" Q2 Yxlabel('时间t');4 N2 Z3 Z. _3 d
title('调制信号的时域图'); W" W( j+ L% }; {
subplot(3,1,2);plot(t,sfm); %绘制已调信号的时域图$ ?8 g, h' ?" @" ] M
xlabel('时间t');' M& H/ H5 _2 i3 [$ j
title('无噪声条件下已调信号的时域图');! }1 j- }9 v) j
nsfm=sfm; # Y0 I) i" Y+ `, `# e, F7 Q
for i=1:length(t)-1 %接受信号通过微分器处理9 H9 r7 p; e& N( v& r
diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;: T$ g9 C$ f) {5 a) F- B/ e
end, l1 w2 _( }. {) L, }# M
diff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)8 t' Z- p ]6 {+ u. M$ X: n
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;( u# J, K: O$ Q; f* M1 X6 z
diff_nsfmn1=diff_nsfmn-zero;& U$ v O2 [9 A, F8 l
subplot(3,1,3); %绘制无噪声条件下解调信号的时域图
5 a- ~! G$ z" s: Vplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
" a$ w+ S7 T! r2 M* _: X& m' [xlabel('时间t');
5 e3 L3 w& k+ e# }, h/ j# w, Ltitle('无噪声条件下解调信号的时域图');
) ^1 d- _; P1 p* G" f. q; {( ~9 b%*****************************************
2 O8 \1 M! V, z! Q9 P0 ldisp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线') r; Z" w% C+ \8 c
pause# p! [7 d! _) _& O- j8 }
%**************figure(4)******************
( E, H1 \; c& ]9 S! ` a! ufigure(4)5 T# |( |% O& K/ q. D- R
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
) i( J. C+ y9 T6 n0 v- Dxlabel('时间t');0 }! N. ?. d! e: L! t1 j3 C% J$ d
title('调制信号的时域图');
- p7 z6 v# f0 d2 a- b& Bdb1=am^2/(2*(10^(sn1/10))); %计算对应的小信噪比高斯白躁声的方差2 R& q/ g: |; g$ {
n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声. Z- }+ I! D6 {2 N* a. d
nsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通! }/ p/ L" C% w9 E
% %过信道传输)2 b u$ b8 V. u1 x
for i=1:length(t)-1 %接受信号通过微分器处理7 e2 _/ Q/ @' ]* Z3 N$ {4 L% d% N. f
diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
! Z6 K+ @, u- J# h2 f f; bend/ N# ?( j4 z" T1 {' b1 g* d
diff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)8 U) F p/ X3 `6 g4 I: Q1 X) H
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;- V, `$ C% w7 f3 i5 V% ?7 p
diff_nsfmn1=diff_nsfmn1-zero;
7 f6 I1 m8 E& I4 ~7 f+ f8 d: @subplot(3,1,2);
' S% S/ Y( h3 Y) z+ yplot(1:length(diff_nsfm),diff_nsfm); %绘制含小信噪比高斯白噪声已调信号的时域图
. U ~3 e3 N* \- h) ~# T l' ixlabel('时间t');
1 ~3 T$ w. ]* S1 J. n0 ]* o3 u! jtitle('含小信噪比高斯白噪声已调信号的时域图');/ B# E3 @; v) E
subplot(3,1,3); %绘制含小信噪比高斯白噪声解调信号的时域图- W0 n7 z+ a# q9 `& g2 t
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');: S( u) u+ j# @9 |* J9 G
xlabel('时间t');
$ ^8 p6 h$ r; |/ Ttitle('含小信噪比高斯白噪声解调信号的时域图');
+ x7 f+ J* P# t3 ^%*****************************************+ w7 s& X! U& j0 n' d- H( G
disp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
7 P' N8 f7 p. j. D$ k: r- v* a! fpause9 n4 K+ @' t) a( D9 B Z+ g9 f
%**************figure(5)******************
# Q* h" v: z% S, o/ [figure(5)( W( ` }# A' x* @- F% D
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
: [9 S( B- m; I) S; ~xlabel('时间t');
# ^' y9 D$ d8 q/ n4 @- r$ n, jtitle('调制信号的时域图');5 ]- K! }' `$ W3 Z+ p& ]
db1=am^2/(2*(10^(sn2/10))); %计算对应的大信噪比高斯白躁声的方差# G+ G# ?; k1 x
n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声
# W' X4 a$ w& J J7 |# [nsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通过信道传输)+ h2 a0 Z. C. Y# A2 s+ r- Y$ Z1 I
for i=1:length(t)-1 %接受信号通过微分器处理
0 ~$ f# O* [. Y7 W diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;1 [% K, W: B# L& w- |
end
+ }- I. x" D5 |' ^9 ndiff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包! y& p$ N( x# K- |7 n. ~
% %络检波)
7 t: a! B0 K7 M# o3 Mzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
' k& U8 l: K$ z5 L2 rdiff_nsfmn1=diff_nsfmn1-zero;
: U/ @9 N4 x" W1 N" y1 Esubplot(3,1,2);
0 }' B2 u t9 C5 y/ Fplot(1:length(diff_nsfm1),diff_nsfm1); %绘制含大信噪比高斯白噪声已调信号& n0 B1 P- T* b* F( y
% %的时域图# {, O: U8 @: \# K% s7 y
xlabel('时间t');7 Z; I) }& f- }
title('含大信噪比高斯白噪声已调信号的时域图');; B m8 n, I! P7 x* A: I: I9 \8 q
subplot(3,1,3); %绘制含大信噪比高斯白噪声解调信号- Q2 y7 P% V; i4 C
% %的时域图3 m$ c! E! H4 m) c! ~- p9 C. v* O8 V
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');) B7 ~4 ] b! U" I
xlabel('时间t');
4 Z7 j6 c* s/ Gtitle('含大信噪比高斯白噪声解调信号的时域图');
9 w6 @& I `4 |( q%*****************************************
0 Q) W( ^* A# W0 ~# t%******************结 束*******************! x) A' a5 ~- a( U8 o$ S
Y/ b( v8 Q+ _( l( g& {
1 Z/ V$ e* j$ y" k% z5 X9 X3 ? |
zan
|