- 在线时间
- 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) u" b: k S" h/ z4 K% ]; E$ P
%频率调制与解调的Matlab演示源程序
0 E4 i8 p+ ^ C. @%可以任意改原调制信号函数m(t)
( d' s _! b% ~4 X" @7 F%电子信息工程 杜怀超 091308305 9 @ l. @4 I& Z/ u5 Y
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
* C! a+ h& m3 E%*****************初始化******************
$ V! E% K. _, Z& ]2 Recho off
; h! _( g" a+ W6 |* Z: vclose all
1 d1 `; l: l* fclear all
% U, P7 S6 z" |! Xclc
4 h2 m! t2 p0 N1 M4 i1 X%*****************************************
! S; V7 V* n- \1 J' R8 J, m%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·! j, R' i5 p5 T$ g+ H$ a6 o# N
%****************FM调制*******************% N K1 R, U' Y
dt=0.001; %设定时间步长8 ~3 I4 D" I5 w& g: O
t=0:dt:1.5; %产生时间向量0 s6 G& u9 }1 x. H" a9 f/ g1 ^
am=5; %设定调制信号幅度
& f& b1 t% [. n Xfm=5; %设定调制信号频率- }/ g% n* y3 w: I. @
mt=am*cos(2*pi*fm*t); %生成调制信号. S7 Y2 A+ h/ [3 T) k+ G. C4 l
fc=50; %设定载波频率
: W6 Z" o/ A9 B+ K# ?2 K) J/ sct=cos(2*pi*fc*t); %生成载波% ]* ^2 p" O8 S7 p9 |7 D
kf=10; %设定调频指数2 h; D6 r9 ^1 o+ ?" F; W1 _
int_mt(1)=0;; w- w7 z2 a+ k6 a: n) U
for i=1:length(t)-1 ; F2 K; b' F' w8 S0 r y
int_mt(i+1)=int_mt(i)+mt(i)*dt; %求信号m(t)的积分
. E6 P% L6 M G# y, S7 X cend %调制,产生已调信号2 o: j2 A m. ?9 ~5 d8 j$ c7 o
sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt); %调制信号
/ @4 n+ G" A7 Q%*****************************************7 c! ]2 o! }, i
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·$ O8 D4 ?* x5 ^& y0 i
%*************添加高斯白噪声**************
2 h( L, b, F0 ~! C' y7 Ksn1=10; %设定信躁比(小信噪比)
9 O& G5 S7 R6 a* Rsn2=30; %设定信躁比(大信噪比)
5 v! T8 D/ D) Esn=0; %设定信躁比(无信噪比)
1 g4 q6 O1 t4 |; J0 K. B( ~db=am^2/(2*(10^(sn/10))); %计算对应的高斯白躁声的方差
& }8 R5 q% E% R7 R! fn=sqrt(db)*randn(size(t)); %生成高斯白躁声( l) C/ _5 ^) y. I3 h
nsfm=n+sfm; %生成含高斯白躁声的已调信号(信号通
2 V: j- N6 `- p6 J%过信道传输)8 M# e) S- `( Y: ?# e' L. d
%*****************************************
0 z3 ?8 O4 E2 L2 {' y%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·# b& N# n# b. E! a9 U5 A
%****************FM解调*******************
* ?1 E/ P, |# _: p9 z, Y! efor i=1:length(t)-1 %接受信号通过微分器处理
8 P5 h0 `% }9 A8 K7 R9 | diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;" o) L0 K( X( i" Y1 \
end
2 E% D8 h, S/ R- w3 A+ r) F+ tdiff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
3 R& X6 ]: C2 T. B' Szero=(max(diff_nsfmn)-min(diff_nsfmn))/2;7 H# J( F2 s, s8 {- i& ]) M6 c
diff_nsfmn1=diff_nsfmn-zero;7 u6 d6 b# n, y/ U& t3 ^% A9 x' v1 Y
%*****************************************9 p5 R7 r, O9 n; u0 R
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
4 T: z* Z6 i+ c, |7 g. f" g" i. b%**************时域到频域转换**************
' A' J+ W7 M. ]5 W- T5 L2 c7 Yts=0.001; %抽样间隔) G& m9 D, A$ C. @* Y# H* x
fs=1/ts; %抽样频率
O( w/ D* m: B' O& Jdf=0.25; %所需的频率分辨率,用在求傅里叶变换
- n; H- T+ L9 h- ~+ j% 时,它表示FFT的最小频率间隔0 o2 F0 u5 t: D b7 [, n5 h# |$ {7 A, t
%*****对调制信号m(t)求傅里叶变换*****
( B% R: ?! _. H; Hm=am*cos(2*pi*fm*t); %原调信号! _. M0 f3 u$ S$ V
fs=1/ts;
( ?* @! @. I0 I/ O3 m' sif nargin==2
3 a4 ~5 n& `/ |, C- p0 r: E n1=0;3 P1 r8 A+ n5 Q+ z* A% k+ z4 X3 N
else3 B3 |/ l$ G! \3 \8 s8 m& l& A8 i
n1=fs/df;
- L8 |8 e+ o* Z" X7 iend
* L$ ?2 L5 M& v' ]n2=length(m);
6 g5 B0 S7 p+ F- \% y4 w. Sn=2^(max(nextpow2(n1),nextpow2(n2)));
( B' k% ], m$ x8 MM=fft(m,n);; \$ f: A2 g/ n: k
m=[m,zeros(1,n-n2)];
- |' K+ ]# t: }6 h5 ]df1=fs/n; %以上程序是对调制后的信号u求傅里变换& V. N6 H+ z- n/ A
M=M/fs; %缩放,便于在频铺图上整体观察% ^/ ]) X7 T. _* w6 q5 d
f=[0:df1:df1*(length(m)-1)]-fs/2; %时间向量对应的频率向量: y& _! x: t) J2 v* p4 ?; S1 I
% c4 s- M9 L4 N7 z1 n* o$ n& P8 B
%************对已调信号u求傅里变换**********' l$ Q: C2 N8 _
fs=1/ts;
3 C$ x% }% d$ y! K/ L0 c: G" {5 w6 ~if nargin==2
' u) c. g7 r+ Z' m+ c+ z3 R- l' r n1=0;; O/ i% f$ o$ X4 K
else
' H6 C8 X# t8 b9 U n1=fs/df;
: F r- B& q$ M& N: S/ }end
! ^& g, g7 Y- e& Fn2=length(sfm);& w4 S; Z1 X4 V/ L
n=2^(max(nextpow2(n1),nextpow2(n2)));4 i% b7 e5 Y/ o6 H. w' |5 b1 @" _9 ^
U=fft(sfm,n);7 `- [, ~$ e. T- ~
u=[sfm,zeros(1,n-n2)];
/ @& R: u/ f/ o% b' h8 {df1=fs/n; %以上是对已调信号u求傅里变换" ^! z. j" P) j9 d# ~ {/ n
U=U/fs; %缩放
0 R. z4 O. U8 j% x3 W6 t%******************************************: x$ P' [ {) x; m
%*****************************************+ x4 k. b$ `7 w% L8 P9 T: @9 S) t9 k
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
9 o% z" y) f u, c% @8 A%***************显示程序******************2 S! K& e( x9 w4 E$ O: i% I
disp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')
* P# A2 m0 o6 N. _, C* _+ rpause N- q3 c- U% a, `
%**************figure(1)******************
! ~8 D1 Z$ h# n& V5 rfigure(1)
" I& c* e8 w' ~( h- c h3 Dsubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
) b0 ?: Q# A( e9 g- A% d8 sxlabel('时间t');
0 `, f5 @+ v1 M7 ~9 ntitle('调制信号的时域图');
$ L: S6 l% ]* \9 {: N, B5 J3 j& lsubplot(3,1,2);plot(t,ct); %绘制载波的时域图7 e( I- |9 y$ M( r2 k
xlabel('时间t');
! i( d4 Z5 `: U9 Wtitle('载波的时域图');% W! \2 n8 \% v# F; { d, A
subplot(3,1,3);
1 k5 G& e* n% X; w, f7 Cplot(t,sfm); %绘制已调信号的时域图) m! b+ v. U! S& U4 X
xlabel('时间t');
3 k2 {+ R% j# R8 h: S4 Ztitle('已调信号的时域图');
" T3 ~5 y* }; C ^( T%******************************************
1 Z2 x, N+ U* ]0 E& G" E) cdisp('按任意键可以看到原调制信号和已调信号在频域内的图形')% R6 q) R& e5 d: w2 V* _+ e
pause
% {8 Q6 K4 u2 s3 i# e. r%************figure(2)*********************2 a7 T- _, f' E" u& o% g) c$ a) X
figure(2), v1 g& K- P* r+ ~! l6 B& G5 o. x
subplot(2,1,1)5 r% ]3 g$ H2 w8 F; J
plot(f,abs(fftshift(M))) %fftshift:将FFT中的DC分量移到频谱中心8 x3 s( L7 L8 U& L: P
xlabel('频率f')0 ^6 o0 j* g3 H; d6 ?7 ?
title('原调制信号的频谱图')
; [" v+ _6 ]5 N {1 Dsubplot(2,1,2)* d1 p7 T' h$ e6 @' A
plot(f,abs(fftshift(U)))6 r4 z0 W5 d3 C/ t8 q
xlabel('频率f')& T+ m7 \* @3 J! Z9 a. Q
title('已调信号的频谱图')
W4 n& [5 P% R%******************************************# \0 [6 w% @ n# Z# x) d
disp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')
0 w+ n& v9 X5 e7 ~ \" Jpause6 t' Y7 L' \# |5 C# U G# m
%**************figure(3)******************
9 j0 O3 U, l, W3 W: H6 q2 U. }figure(3)
! y% H# J0 o6 e" @$ Msubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
; ^$ C1 J3 @4 A8 |+ N! p, fxlabel('时间t');
. N0 T! e' p& {# Ntitle('调制信号的时域图');
' }. _2 M) c0 Osubplot(3,1,2);plot(t,sfm); %绘制已调信号的时域图
5 f( W* r& S8 v, kxlabel('时间t');& ]$ l0 U8 @" N. P# s7 ^
title('无噪声条件下已调信号的时域图');" h6 D: C7 m5 [0 ]' V; Z; T9 l
nsfm=sfm;
% @8 F3 {4 Z! f5 nfor i=1:length(t)-1 %接受信号通过微分器处理7 v( V& ^3 e2 S: l' x- t2 r
diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;" D4 v, K `' i% V- ^3 w) p9 n9 O1 g+ y
end+ c( i" L: D4 O
diff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
1 _7 }" A( r4 r, Z2 U( |* gzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;) X4 T7 W6 S1 k( u S
diff_nsfmn1=diff_nsfmn-zero;5 R4 C3 u) \0 y" Y, t" q' j7 S6 q) c
subplot(3,1,3); %绘制无噪声条件下解调信号的时域图+ r# e+ H% g0 C% ]# Z' A
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
0 B! V& s1 b e3 `) M5 ixlabel('时间t'); . r; S' X& A" Q) F9 U
title('无噪声条件下解调信号的时域图');
0 X, u5 J$ ~3 F8 y2 a) w, w- _%*****************************************2 g5 X1 R/ h* m
disp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')% ~8 ]1 L" S% O6 M0 c2 g" X$ p
pause1 M6 i' J. [% @4 e3 p* k# y
%**************figure(4)******************% }; H, M1 M1 z3 `
figure(4)
) Z7 a) R; O# Y; q) ] b0 e, ~subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
2 f$ _; s! Y* k9 x+ ?# \! C. Kxlabel('时间t');9 {2 J( w8 d' W
title('调制信号的时域图');
7 D) T. Q/ I, D' L9 kdb1=am^2/(2*(10^(sn1/10))); %计算对应的小信噪比高斯白躁声的方差
9 S& @+ k* u8 M9 j4 g& Jn1=sqrt(db1)*randn(size(t)); %生成高斯白躁声
' {9 C/ Y5 b; {: Y" gnsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通
9 ]$ |5 {& X# r4 K: o1 E% %过信道传输)' y( n) W$ C! O- T
for i=1:length(t)-1 %接受信号通过微分器处理- P& ^) i" V8 W8 t0 }
diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;3 D& ?- ^" V# U% j5 e
end
0 B$ p) f1 j* `: Z5 @- Qdiff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
9 ?$ h. f( k! d" r7 }zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
$ W8 a8 u: W) q* s9 n/ k0 Jdiff_nsfmn1=diff_nsfmn1-zero;4 n5 L% N ^. Z7 `
subplot(3,1,2);
* E3 X3 V4 C( y& V- V Qplot(1:length(diff_nsfm),diff_nsfm); %绘制含小信噪比高斯白噪声已调信号的时域图/ o0 Y4 A# A) D# S% z
xlabel('时间t');1 r1 ~0 F5 J9 J+ J9 J; B* J3 z$ a
title('含小信噪比高斯白噪声已调信号的时域图');, c( w& b8 u' U7 q
subplot(3,1,3); %绘制含小信噪比高斯白噪声解调信号的时域图
$ Y4 b. N8 x4 {plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');2 x9 z, |) E: R7 T
xlabel('时间t');
" x- x% t9 K, n: o+ y0 b2 mtitle('含小信噪比高斯白噪声解调信号的时域图');: `' L' X! R, p
%*****************************************
) F) o+ ~, H- c& \. k0 R7 Hdisp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
( Q& I% A" x/ t2 q/ r/ p3 e5 Qpause
& D" y9 m4 ~4 S%**************figure(5)******************
6 [/ v. G0 r" d1 mfigure(5)
. _+ H8 Y' c& G- b9 M+ F* c8 _subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图* {8 Z. W1 I. `* Z/ F
xlabel('时间t');
- T- s' I$ w0 I* Ytitle('调制信号的时域图');% k @+ }4 n* |) \2 M
db1=am^2/(2*(10^(sn2/10))); %计算对应的大信噪比高斯白躁声的方差
( Y$ M5 {# q/ _n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声
" z4 M, f+ ] _4 k5 d3 {nsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通过信道传输)
! z( q& L! l! ` s( Ofor i=1:length(t)-1 %接受信号通过微分器处理
) m7 o: f2 @4 F: K1 y) X diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;4 s) e6 |& u) R- I% x5 n6 u! A
end
5 r# M* f! j# k. j3 Mdiff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包
- e, q2 q S# R- h% %络检波)$ ~' R' _* w( P% I9 `* g, T. Y
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
4 k) T' l- b" r9 i2 G' N. w. N4 @diff_nsfmn1=diff_nsfmn1-zero;
' J- t. x# }( K; x4 ]subplot(3,1,2);3 L: F, p! z: f) O
plot(1:length(diff_nsfm1),diff_nsfm1); %绘制含大信噪比高斯白噪声已调信号
4 E! c, }% t! a: [( g2 O% %的时域图
. d. @7 h4 n* y: m3 C% zxlabel('时间t');8 l* x% y* ~' [, ^4 t
title('含大信噪比高斯白噪声已调信号的时域图');
6 R3 L+ K% e. l o# I: Ysubplot(3,1,3); %绘制含大信噪比高斯白噪声解调信号
/ g3 ^! V4 Z* x' E+ r6 z+ D. h% %的时域图8 I' q' ^3 O( x7 d
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');% n6 H" g$ X6 T! i1 ^' ~* L
xlabel('时间t'); - y+ ?* e0 H5 K: |9 i8 ?
title('含大信噪比高斯白噪声解调信号的时域图');- i* E! d7 f0 y/ u5 z) z3 W7 H* ~& O
%*****************************************% V: }* Q0 [. ?, q- |3 _/ D
%******************结 束*******************, W- Z" j7 V3 ~# d
) z; ?6 c1 `9 b6 U$ [6 _2 G
! X' R; `% v$ ?$ k/ n8 G5 M2 l0 f
|
zan
|