- 在线时间
- 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$ m _+ Y5 \: X- a4 q
%频率调制与解调的Matlab演示源程序7 H$ O+ N+ k1 _5 t+ u
%可以任意改原调制信号函数m(t)
$ B' v# |2 u: ?! x4 Y) n% p) S%电子信息工程 杜怀超 091308305
) c+ M/ P2 c4 q/ |) v C%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
3 w) l0 f: M) i2 c3 g8 Q3 x%*****************初始化******************
2 @4 h$ h( ^4 Cecho off 0 q* v: Q- b4 N/ L& ^7 N! e
close all9 ^* ? s6 o+ ^3 k- `" m) C9 V6 }
clear all
/ P1 k% a9 X- L3 R0 Iclc
+ q8 R# @2 R/ t$ [4 E, c* }%*****************************************
$ H6 h: L s7 ]) j3 B%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
) q1 \4 O$ G; {. Q1 l* |! E%****************FM调制*******************
2 g! t- G& V0 g; Odt=0.001; %设定时间步长( n3 ?- R4 ~2 E
t=0:dt:1.5; %产生时间向量5 t/ Z! {! j! j$ E
am=5; %设定调制信号幅度
$ h' g- K( t8 ~" |' l5 V3 cfm=5; %设定调制信号频率
3 |( t, u4 e; t0 Amt=am*cos(2*pi*fm*t); %生成调制信号, |' J# M" e3 K
fc=50; %设定载波频率- F& t% j: W$ R0 Q' J2 D9 p! S
ct=cos(2*pi*fc*t); %生成载波; c; Z; g5 G# J" w7 Q
kf=10; %设定调频指数8 L+ r3 k6 R( i4 d+ J
int_mt(1)=0;. f7 Z: Q0 x& W3 T X1 M* Y: V) ^. ]
for i=1:length(t)-1 2 f4 T( v1 X) [
int_mt(i+1)=int_mt(i)+mt(i)*dt; %求信号m(t)的积分/ S' B( ?2 c( G) l7 B
end %调制,产生已调信号' Q0 f |5 b/ w8 e9 b3 c6 k
sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt); %调制信号
' I$ i( W2 x6 r% x. N$ Q%*****************************************( s% m, Y7 a1 p& i1 X
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·$ O- c: p+ x# e+ |; {+ x: ~
%*************添加高斯白噪声**************1 M. a$ c: r$ Z6 X% p' }
sn1=10; %设定信躁比(小信噪比)8 x! [. u6 \& g; _1 e) S
sn2=30; %设定信躁比(大信噪比)
$ M- H. N' L% D9 e/ J# e! F1 R% [sn=0; %设定信躁比(无信噪比)- K. h$ I& w( `5 c, b9 ]4 d+ O
db=am^2/(2*(10^(sn/10))); %计算对应的高斯白躁声的方差
3 z0 _6 |- Z- Z( ~0 `6 Mn=sqrt(db)*randn(size(t)); %生成高斯白躁声, i; r' n8 m! ?4 ~% s4 J
nsfm=n+sfm; %生成含高斯白躁声的已调信号(信号通 |5 _* i+ j. r* D1 k* _- g
%过信道传输)
2 ?' O" B+ b; R+ [%*****************************************3 l9 A/ m; F2 ?5 Q4 [9 U$ k4 t4 z
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
% I, e5 A$ s' \; e" J% B/ e. |%****************FM解调*******************
; A; z* z, Y$ ~5 {1 T* E# `! a3 \- q- rfor i=1:length(t)-1 %接受信号通过微分器处理, ?5 k1 F& ]: \: [% W5 ?, C
diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
8 U3 n" ~& Y& c1 x/ [3 jend9 ?2 X" b# {4 C7 z0 H( y8 n6 T( w
diff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
0 P0 ^' F* ^8 @3 ezero=(max(diff_nsfmn)-min(diff_nsfmn))/2;3 U4 G- c4 _) ^1 D$ b
diff_nsfmn1=diff_nsfmn-zero;0 g/ U2 F; R( A ?' r+ h& V5 A
%*****************************************
& {+ E. K( m, W$ T& [%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
$ P4 w3 J3 y/ ~9 F7 e%**************时域到频域转换**************
. a, v9 G2 [5 I+ Rts=0.001; %抽样间隔
/ @( x/ f. H8 ]! w/ m! h" `( Gfs=1/ts; %抽样频率
$ i7 _6 O& q, P9 N! kdf=0.25; %所需的频率分辨率,用在求傅里叶变换" x3 T. u6 s) l5 V6 A
% 时,它表示FFT的最小频率间隔1 ^# i. d! W* D4 S
%*****对调制信号m(t)求傅里叶变换*****
0 V9 a' I. b8 I T+ [3 km=am*cos(2*pi*fm*t); %原调信号
, t0 P* N" L4 D) l. q- Ofs=1/ts;
, c. U0 ~, n5 N* W# h; r% `0 Y& Hif nargin==2
, g4 Z3 `4 b6 p* z) w n1=0;
1 e3 x$ D7 a, S' |8 ]: O4 kelse% A5 Y) a% Z+ F, `4 A% B
n1=fs/df;
( V" Z) r3 a! E! ?( `end
$ P$ u, \% |2 y# |& Hn2=length(m);: n5 B5 ?" {( j( U" T9 N3 F# a) R. M
n=2^(max(nextpow2(n1),nextpow2(n2)));
5 V1 m5 R% P! p1 ?M=fft(m,n);
6 K) Z# x0 z5 A# V9 _1 |m=[m,zeros(1,n-n2)];
* n& Z3 S3 X, T& |# s! Qdf1=fs/n; %以上程序是对调制后的信号u求傅里变换
9 N. g; @- Y' X8 f! t' T1 y' qM=M/fs; %缩放,便于在频铺图上整体观察3 t$ O4 a! e$ ^! T
f=[0:df1:df1*(length(m)-1)]-fs/2; %时间向量对应的频率向量; P8 j6 F( f3 Y. R8 B5 v% @
6 z4 @1 ^0 Q& c, g: S/ ?
%************对已调信号u求傅里变换**********- f. e7 A' |, P! _) } ?
fs=1/ts;
* f$ ]8 N7 O5 n6 A- kif nargin==2, `/ X3 z3 m, j. W8 o+ |
n1=0;
0 i7 i* |7 Z, v2 t+ T/ Q4 Melse: |) m7 y. e6 L5 N
n1=fs/df;, p' l/ d" O& C. z2 d
end
- H; I$ M* E) x* V3 @% k* S# `n2=length(sfm);2 F( [0 I! g2 W
n=2^(max(nextpow2(n1),nextpow2(n2)));" Y. L" H7 B* g7 X6 u, h
U=fft(sfm,n);: A- c0 h" O; x* r" h& g
u=[sfm,zeros(1,n-n2)];& F$ z5 i `/ Z5 s3 ]: R) r9 f; `
df1=fs/n; %以上是对已调信号u求傅里变换
$ [% Q( E6 M! E J# ]0 {* X4 [. tU=U/fs; %缩放' j1 y1 t0 Y8 k5 y6 t
%******************************************/ g" C; h: }( w. I" `
%*****************************************
8 Q6 n9 F: I3 n: {+ W- h9 f4 U- E%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·1 }& L! v! s7 \
%***************显示程序******************6 S. g7 c+ E$ t4 D0 O# i, k
disp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')' ~- G, P$ ~& C q D/ u. e# B
pause
+ Q5 a, L O- C8 N4 G0 O%**************figure(1)******************
+ R1 X0 j- J# g" \% h# ~% _5 R" @/ [figure(1)
3 P& V; n0 l& \4 Q' gsubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
( c Q) x, v, ~0 @' ixlabel('时间t');0 ?+ h6 S# `/ l+ |1 N* A, `
title('调制信号的时域图');
% |* w% `4 n8 P% c+ O- {5 i% ^+ rsubplot(3,1,2);plot(t,ct); %绘制载波的时域图7 g" b& K# o* O
xlabel('时间t');
) z3 K7 L4 i1 q6 o+ {5 b% Y( S, |# [title('载波的时域图');
4 P8 a* Y: H: z# _3 o& K% }5 F. Usubplot(3,1,3);
& L% f- s0 [/ ?4 q+ j9 ?6 i8 s) Xplot(t,sfm); %绘制已调信号的时域图. f, V0 y% C: w
xlabel('时间t');
2 S) t' C3 S+ |; \title('已调信号的时域图');# F$ ?9 P5 h+ g% G& ?. t
%******************************************/ E, ]( K) } A$ g
disp('按任意键可以看到原调制信号和已调信号在频域内的图形')$ v% V0 A- i; Q/ X
pause5 r4 H/ e9 x9 U/ Q4 e
%************figure(2)*********************" c, m7 D2 d2 n9 M4 j8 c
figure(2)
$ g) @5 E2 W5 r8 P" D( |/ S* Q+ _6 h% \subplot(2,1,1)
9 \; J; k+ K$ b! |. s- r& D6 f l Nplot(f,abs(fftshift(M))) %fftshift:将FFT中的DC分量移到频谱中心
5 C: v& g- a! U; j2 Mxlabel('频率f')( j1 ] \6 e& Y) O
title('原调制信号的频谱图')& A2 e) E' `8 q& m, E! V3 S0 ?8 A) Z
subplot(2,1,2)
+ L% o& N6 _$ T, o0 tplot(f,abs(fftshift(U)))$ ^( E$ z+ ]; j9 d
xlabel('频率f')5 r: e( J2 G2 n" g' N/ i
title('已调信号的频谱图')' J' J" Q$ I' B3 i- Z8 f2 s
%******************************************
+ b8 |9 ^5 U2 Z& ^% Adisp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')& Y+ z* J3 @$ h9 L! ?
pause
5 O: x. ?* g; _+ c4 ?+ E, [- _- X%**************figure(3)******************9 j- ?* |! d' f6 I# h" z
figure(3)! B4 E Q0 v- [9 h* f4 c i
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
0 \" Z2 }; V. L% f2 O; L% \/ |xlabel('时间t');+ H0 r8 K* o" x
title('调制信号的时域图');
1 I9 ?* b# E! P) `9 M1 O. i: usubplot(3,1,2);plot(t,sfm); %绘制已调信号的时域图
, P# h6 p2 N! u, }xlabel('时间t');4 w+ }) F+ @: S; J
title('无噪声条件下已调信号的时域图');
( s7 j# B6 k8 Y, R' m& _nsfm=sfm; 3 t) y* Z2 n2 t" S
for i=1:length(t)-1 %接受信号通过微分器处理, R% v% M% S: F$ j: p! m
diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;- V- k5 X" _4 u) ]
end0 l# F) W D, \5 d
diff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
% _0 P* o: j6 [8 |zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
1 M+ x% r, j) X/ e b/ p7 bdiff_nsfmn1=diff_nsfmn-zero;6 I% `' `3 J4 M. z( I) X+ x
subplot(3,1,3); %绘制无噪声条件下解调信号的时域图
0 T# p. B" O7 B& X9 T8 {plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');; x* E q \1 l3 c% X1 F; J$ h
xlabel('时间t'); 1 R8 V/ l4 _0 i8 P& }
title('无噪声条件下解调信号的时域图');/ F H3 M' S7 W7 q R3 ?
%*****************************************( S; X' U! q5 g9 S* P" c
disp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
6 {& Y+ I# o# Q/ Spause0 C z0 r8 O$ m7 c0 C6 _
%**************figure(4)******************, I: @$ U' k- G% D
figure(4)1 r) r' r0 f/ U& l
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
! {" y6 X) S: V* u" `/ Hxlabel('时间t');
# i$ ]2 s. H! D) C0 L+ L' r# M) Ctitle('调制信号的时域图');$ U- K& L* q! _7 n5 G! G
db1=am^2/(2*(10^(sn1/10))); %计算对应的小信噪比高斯白躁声的方差 v4 \4 F3 v& O! K$ F+ m' J, H
n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声
& n8 B% H3 h& P' S) n! Insfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通2 E \% _7 M5 u8 {
% %过信道传输)
4 w' _, s( W- m) T8 }for i=1:length(t)-1 %接受信号通过微分器处理
6 S, s: r, I2 G% }/ v- d0 E) E diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;, Q6 M4 D$ r7 ]+ S2 W) c$ l
end, N7 C& h/ C4 j1 S( Q6 W9 ^
diff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
( c# W% g# y% T# B- V+ G; Izero=(max(diff_nsfmn)-min(diff_nsfmn))/2;) t2 Y) x: ` k% P0 `2 R: s
diff_nsfmn1=diff_nsfmn1-zero;
5 Z, ]" o3 E' Tsubplot(3,1,2);
9 G; D/ N. b9 C6 }, i) Y3 |/ B: Vplot(1:length(diff_nsfm),diff_nsfm); %绘制含小信噪比高斯白噪声已调信号的时域图& G" I; S2 s7 e3 ^+ z8 ~
xlabel('时间t');
" w8 o* O: B9 C6 atitle('含小信噪比高斯白噪声已调信号的时域图');
3 ^6 \7 V: j/ C9 ^* b7 a" R3 q. isubplot(3,1,3); %绘制含小信噪比高斯白噪声解调信号的时域图) ^) i( e& ^# t% u# F. s
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
9 M. v5 N" p }9 F3 Jxlabel('时间t');
) n! E1 H9 B' H3 R+ Dtitle('含小信噪比高斯白噪声解调信号的时域图');
3 W9 D' w b& R B3 ~: }0 P- B# K%*****************************************) r' t9 D u6 N/ a
disp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')/ P( @; P9 V( x7 G P
pause+ @& D2 w! s7 {) d& a
%**************figure(5)******************
; \* `0 v2 @# ?figure(5)
8 A9 D5 e% V. F" |' y/ Wsubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
4 z$ A5 Z- Z$ M7 m' d' b+ s# T- mxlabel('时间t');& }8 _. J( R/ B7 [. t5 ~/ W
title('调制信号的时域图');
* |" `' h0 {+ T" x# N2 @: [db1=am^2/(2*(10^(sn2/10))); %计算对应的大信噪比高斯白躁声的方差
+ s1 ^# n6 e- L$ i# _+ T8 [3 Sn1=sqrt(db1)*randn(size(t)); %生成高斯白躁声7 S/ D5 U( o5 T1 x9 W) q
nsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通过信道传输)( `# a/ ~4 ]1 z9 X; ~9 P
for i=1:length(t)-1 %接受信号通过微分器处理
* d7 D) [$ I9 l8 O6 e diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
( c2 W3 Q( z- E1 i# Dend+ P0 P4 D$ w/ } Y, y8 g
diff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包
6 k7 S0 C. g$ Y/ F1 ]% %络检波)# \) \, C0 A' F' @, s
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
7 S1 x0 }# [: R0 Cdiff_nsfmn1=diff_nsfmn1-zero;/ b p/ p! F( }1 ~" F
subplot(3,1,2);6 ]" Z- g$ a6 }/ t( `
plot(1:length(diff_nsfm1),diff_nsfm1); %绘制含大信噪比高斯白噪声已调信号" `& G4 L6 S& {- t4 h
% %的时域图
/ W4 r$ @ ~1 S& K6 z6 ~- Hxlabel('时间t');
4 Q& x9 O) N* P9 [+ W& Ktitle('含大信噪比高斯白噪声已调信号的时域图');0 J* `/ l! _/ s
subplot(3,1,3); %绘制含大信噪比高斯白噪声解调信号8 O1 l7 r4 b0 G
% %的时域图
7 ^# U8 c# }4 D5 K8 Vplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');5 _4 d" ^9 g5 z& P7 n$ H
xlabel('时间t'); # ]- }! B0 z, u6 q, A. u1 a' j
title('含大信噪比高斯白噪声解调信号的时域图');
+ Z9 ]9 v3 Y! q/ l- k%*****************************************
- X7 v+ J- F/ |%******************结 束*******************
) g! e: m( u5 K2 B
1 g4 ^7 f8 v6 e1 J
x- e5 J9 ^0 b3 T |
zan
|