- 在线时间
- 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
: ^' O. }0 V+ _9 F- k% P! J1 G%频率调制与解调的Matlab演示源程序
- a* H# K6 j" O; Z: z5 J%可以任意改原调制信号函数m(t)
, \$ U/ z5 R/ V/ g9 O%电子信息工程 杜怀超 091308305
) Z5 S4 O) a% m G! v%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
% V$ M7 g0 u( E%*****************初始化******************
5 `9 \: [6 v$ G8 N" i7 ?, ^6 {echo off 9 I. S( n0 D: m9 E3 v' n
close all
# Y2 r6 t0 o) H9 _7 sclear all
7 D, c$ W* O3 @8 S* ^: l. eclc4 l- m+ w. D0 r+ }( i+ z1 f/ m. }
%*****************************************
: C8 U' u8 _" ], Z: P+ t" C%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
6 {7 P3 k% l' W; N& t3 L%****************FM调制*******************
7 x% C( T2 T( h" [3 S/ m" Bdt=0.001; %设定时间步长
b5 _; n. ]* {/ O3 I7 ot=0:dt:1.5; %产生时间向量
; H/ Q& i1 l0 | {0 R6 S. M: bam=5; %设定调制信号幅度
% A, z. S) `( n# nfm=5; %设定调制信号频率
+ ?# w- h$ D+ S$ U% j5 i* Gmt=am*cos(2*pi*fm*t); %生成调制信号
: q+ w$ o- ]6 |( ?; kfc=50; %设定载波频率& I: @+ ?4 U& M( g3 V% g
ct=cos(2*pi*fc*t); %生成载波
1 a# b& L9 N, _4 z' G Ukf=10; %设定调频指数: S4 B9 l H7 F* u8 C
int_mt(1)=0;
3 I9 R* V& D6 ]8 ]/ o! @0 |* Wfor i=1:length(t)-1 , C) R( Q; P* s9 @+ ]
int_mt(i+1)=int_mt(i)+mt(i)*dt; %求信号m(t)的积分) m- @ L) `& H
end %调制,产生已调信号) T( v$ j6 m# i: J7 S+ E8 X
sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt); %调制信号, T+ O3 E* }$ i. z T$ \% l
%*****************************************
+ C8 Q% Q$ B& f* _% P+ V1 d/ m2 s: N( h%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
3 D. [5 l* i# W, C1 y( T7 ^: j: L/ P$ h%*************添加高斯白噪声**************
) x. a6 @! d# ]0 I- }% usn1=10; %设定信躁比(小信噪比)
3 |/ @- i! O1 I7 f$ P8 \sn2=30; %设定信躁比(大信噪比)
( ~5 Q6 z- A+ T; v, o8 j" _sn=0; %设定信躁比(无信噪比)
. d' Y$ W* }5 vdb=am^2/(2*(10^(sn/10))); %计算对应的高斯白躁声的方差3 @, F) \1 Y- b5 k
n=sqrt(db)*randn(size(t)); %生成高斯白躁声
$ c; J2 S8 k5 j8 O' `, \6 hnsfm=n+sfm; %生成含高斯白躁声的已调信号(信号通
# Q7 r( u4 `/ I, p%过信道传输)
6 h- P! T, d. ^5 y%*****************************************& f4 e, W1 P+ y" P, h) K6 T+ N
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
]; V- H5 ^+ _ ]- r; m& q% q# C%****************FM解调*******************4 ]' F: h8 I+ M7 t
for i=1:length(t)-1 %接受信号通过微分器处理1 D/ o0 y8 d6 m
diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;. h: q1 c4 {7 M4 g
end0 y& T* I, { y6 {1 Z, p% S
diff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
, J# R& ?' M7 O. v7 V% ^zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
, i0 c7 X8 I T6 |$ Hdiff_nsfmn1=diff_nsfmn-zero;
' W# p/ K0 H# m+ R; y* M3 u3 `%*****************************************. j" a2 m8 R* i4 ` b
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·1 x3 I |4 y, z, |# @
%**************时域到频域转换**************
& v [& ~ s* v" E& T) uts=0.001; %抽样间隔
$ i& }& Z# j' J4 _7 ~/ Ofs=1/ts; %抽样频率6 _$ H# Y, ?+ m# E
df=0.25; %所需的频率分辨率,用在求傅里叶变换+ l. O! u' }: J8 s6 y' I
% 时,它表示FFT的最小频率间隔
8 W5 Z( P: i" M8 d% x%*****对调制信号m(t)求傅里叶变换*****. l9 p1 i$ @: C( `
m=am*cos(2*pi*fm*t); %原调信号
# N0 B1 Y" s# U8 f y, qfs=1/ts;
0 j9 e8 C! o- z3 I0 T: Bif nargin==2! N8 j8 W, g7 r) W
n1=0;# D. g: I# N0 b, m7 g! w1 Y5 G
else
% P Y: @8 S( r/ |) v0 X% m n1=fs/df;1 G7 L6 I( G5 L8 V
end
2 Z. |% r" h4 q$ \% Kn2=length(m);+ j* p# R6 R% R' O% `. C
n=2^(max(nextpow2(n1),nextpow2(n2)));8 m/ M* E, }7 Z- O! [* b3 ^
M=fft(m,n);
* r' s/ o3 y, k4 r2 `( X- Am=[m,zeros(1,n-n2)];
) i4 X8 t4 r4 rdf1=fs/n; %以上程序是对调制后的信号u求傅里变换" ~ l6 D4 F7 O" T
M=M/fs; %缩放,便于在频铺图上整体观察5 J( f, s% F1 o$ Z. h# j( Q' v
f=[0:df1:df1*(length(m)-1)]-fs/2; %时间向量对应的频率向量
1 F9 [/ l- N! N
9 t' A3 n5 _7 m! }4 f%************对已调信号u求傅里变换**********
! w$ i4 f% q" t5 J0 T7 Ofs=1/ts;
. ~" a! e3 c9 U6 A7 C$ E- bif nargin==2, k4 v9 {! y9 q; a0 o5 I# b
n1=0;; `2 Y' o m5 r& p5 a$ Z8 n, j/ r
else2 n9 P2 N/ }& d! \9 f
n1=fs/df;
3 `3 D$ L7 h0 E9 u2 a8 fend9 ?% e: U: x, F) Q) S
n2=length(sfm);- H/ y8 c3 F5 {- h
n=2^(max(nextpow2(n1),nextpow2(n2)));4 V% T8 @4 e) P& v& ^, l
U=fft(sfm,n);
) E0 w$ k v, Y" U9 o zu=[sfm,zeros(1,n-n2)];! c: ~- F7 K1 l5 Z. d
df1=fs/n; %以上是对已调信号u求傅里变换( A& C/ m! A$ P1 k! i2 e( r) c
U=U/fs; %缩放
! k/ l8 q/ [' H+ o%******************************************2 L* K: o: ]1 A
%*****************************************
, r' P8 R* U, [" A- K# V%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·9 t9 B' A6 s6 s: I
%***************显示程序******************! d2 M! Y8 |* h o
disp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')
- W2 g! D+ z$ v' vpause3 R: e6 n1 b( M5 R, P+ `
%**************figure(1)******************, j. P1 b4 I3 {2 W) s |
figure(1)
6 f6 O( k& S# Ssubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
0 j) Z/ o( Q2 k+ E0 Jxlabel('时间t'); S- v6 }: _1 Z# b
title('调制信号的时域图');; Q, I" ]. d1 w8 r- E
subplot(3,1,2);plot(t,ct); %绘制载波的时域图
; A' s4 A/ {6 U7 P6 axlabel('时间t');0 `. N; P/ S% O0 r+ ]
title('载波的时域图');# ~, U$ x# w' P0 o& T
subplot(3,1,3);
! O r: n& D9 j! `) \% V \% L0 Tplot(t,sfm); %绘制已调信号的时域图
: H" G6 [$ `+ u$ x# }5 d1 R( K- [: pxlabel('时间t');! L6 j* C! b/ C
title('已调信号的时域图');
- {4 [% g" f3 _ p% h8 G%******************************************# X& l. Z) e* P, d3 X+ A
disp('按任意键可以看到原调制信号和已调信号在频域内的图形')
6 t8 i7 ?9 V8 E: _& e" Kpause
5 w8 P; W* Z# ]& g: j& x9 z%************figure(2)*********************+ l {, {, }$ o% p7 l8 {- n
figure(2)- e S- b1 C M* Y
subplot(2,1,1)7 O* a9 D5 V6 X( |
plot(f,abs(fftshift(M))) %fftshift:将FFT中的DC分量移到频谱中心* \8 D0 s3 A8 t4 v8 Y6 w
xlabel('频率f')
$ g0 `5 [5 i& ^) a8 Dtitle('原调制信号的频谱图')
$ G0 y& ~6 f2 H% Q1 m4 t7 esubplot(2,1,2)6 w+ R9 w+ g. X' n
plot(f,abs(fftshift(U)))
y) H; b; z) g* h2 i Kxlabel('频率f')5 ]$ H5 j( N' ]- w
title('已调信号的频谱图')6 N3 x/ s8 v/ X% F
%******************************************
) N; I2 ^' X, f. ]7 v% t, s7 c6 |disp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')" d0 z; d, x1 o5 s8 c
pause
5 ?' H" }7 O3 k" _5 F%**************figure(3)******************# w+ i) w! Z% J! j7 x: q
figure(3)
! D+ t' s+ B; }subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图 ?6 J5 L* q# C
xlabel('时间t');, e O* V5 D( X2 S) Y
title('调制信号的时域图');
0 d$ E8 W: e2 p# q2 {subplot(3,1,2);plot(t,sfm); %绘制已调信号的时域图7 b3 p% n& b! @/ q' i; ?
xlabel('时间t');4 R# n9 n( b/ g
title('无噪声条件下已调信号的时域图');
7 T- r! O9 L) T+ t9 p6 Wnsfm=sfm;
. Y4 y$ F& N D; n- H* o+ T; |for i=1:length(t)-1 %接受信号通过微分器处理/ Z& Z( g' N O w- U/ u5 C* ]
diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;1 c, M9 n9 c: u! a$ W; o* U
end
+ |/ Q' } E- ^( Y1 A# l4 cdiff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)& ]+ M5 _1 g8 W1 a
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;( |2 h" ]6 n# @
diff_nsfmn1=diff_nsfmn-zero;
% O/ @/ ?& _4 @1 _$ \8 O, L; hsubplot(3,1,3); %绘制无噪声条件下解调信号的时域图
% l( x/ K( @1 Q2 Aplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');) E2 M8 a' }& @* l. B: Q
xlabel('时间t'); - ^5 B3 Y! E, m8 i+ S+ e3 W
title('无噪声条件下解调信号的时域图');( V3 ]$ Y n' G9 F# k
%*****************************************
: r6 [: J8 o, m% ldisp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
6 m) P u& H, b. a9 ]3 opause3 f/ I2 z( y9 K" D3 N
%**************figure(4)******************" L o; p" a, D0 l
figure(4)# O r( j" a2 a
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图+ [# c# t+ j4 t* F
xlabel('时间t');$ D. B J4 @1 k1 r k) z0 k5 x
title('调制信号的时域图');2 t0 Z) Y) m3 |1 p1 B2 Z8 z7 c
db1=am^2/(2*(10^(sn1/10))); %计算对应的小信噪比高斯白躁声的方差
( g( m1 a- n3 U% V! v* U- hn1=sqrt(db1)*randn(size(t)); %生成高斯白躁声
I0 D6 c% c' C3 |nsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通
% I- M! i8 L) {2 a- x% %过信道传输)
! |0 o* q8 U% [; U* y, h- K3 |/ K2 Tfor i=1:length(t)-1 %接受信号通过微分器处理# G% g( V. s# ~
diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
' e: d0 g/ g9 yend
2 h7 ^% @6 e, t( c; Idiff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
( B+ `" P; j$ q7 izero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
6 P( \! Q2 _ W w3 O4 Ydiff_nsfmn1=diff_nsfmn1-zero;
/ @, t+ Y5 j4 q/ K% p+ asubplot(3,1,2);( @- J) Y* f0 c1 [3 T# ]- g
plot(1:length(diff_nsfm),diff_nsfm); %绘制含小信噪比高斯白噪声已调信号的时域图
' x9 O! U/ a. T8 q2 d& m: `xlabel('时间t');: A2 e% g" C7 f; C* F1 k0 B; ]
title('含小信噪比高斯白噪声已调信号的时域图');/ [, Y# W$ o8 t: K& E, b4 M! k
subplot(3,1,3); %绘制含小信噪比高斯白噪声解调信号的时域图4 o7 [8 D, @ K% P8 G
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
- s ]0 j/ B/ t& G5 `xlabel('时间t');
( L% s+ G5 J/ h% x+ {title('含小信噪比高斯白噪声解调信号的时域图');
/ Y' [5 | P# A! H%*****************************************
3 ]* |% M8 O2 ?- L* _disp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')' |' I, X# v* G2 d9 t w% h
pause3 t) T4 d: J! d0 \
%**************figure(5)******************0 ^5 W# Q. a, K! Y5 W* Y p
figure(5), |" O+ j: Q' k# H, N
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
7 N# ~5 a& B/ \+ q: Jxlabel('时间t');
. T O8 r$ b$ X- j7 v6 Ptitle('调制信号的时域图');
# e* \, O5 n* g u% L' s! ^9 Rdb1=am^2/(2*(10^(sn2/10))); %计算对应的大信噪比高斯白躁声的方差
7 b8 D0 h/ | }1 pn1=sqrt(db1)*randn(size(t)); %生成高斯白躁声
; n7 h; L% F' y, d3 | p( @+ N4 X+ v3 tnsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通过信道传输)2 U$ y7 s0 q! t4 E0 i7 H( k
for i=1:length(t)-1 %接受信号通过微分器处理
+ o' S! a/ e5 Y! w2 W7 y diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
+ g' ^5 F7 D$ `end% j& U3 N. D2 J7 C0 @2 E
diff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包& ~0 Z; o) [2 [) c
% %络检波)8 P+ {, Y$ k) ]% T# T
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
. {4 y3 V$ F& ~3 R# ldiff_nsfmn1=diff_nsfmn1-zero;( t% O$ k, X6 B0 ^$ O9 v$ Y
subplot(3,1,2); V' y7 _! J& J8 q; E& G: t8 p
plot(1:length(diff_nsfm1),diff_nsfm1); %绘制含大信噪比高斯白噪声已调信号* y' t7 M, O" ]* L. T+ I6 m
% %的时域图
6 V+ ~8 U, L- p" x' a( @xlabel('时间t');
- g, Q' j& r) `& j; Y/ @, Ktitle('含大信噪比高斯白噪声已调信号的时域图');3 g2 X) ~! S9 }; _
subplot(3,1,3); %绘制含大信噪比高斯白噪声解调信号% N# s0 f3 g# b# ]
% %的时域图6 l, H5 w& p( i% o$ z0 Q
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
0 t- K' \5 E% _9 o, h) v& j. Rxlabel('时间t'); . N( R- s2 x- {, K- N6 x
title('含大信噪比高斯白噪声解调信号的时域图');
/ d0 w6 K3 I0 A+ J! x' R%*****************************************9 v2 c- W: V {* g3 C$ M
%******************结 束*******************
5 G6 ] o P$ V; L3 O, q1 \' n
" L, W, b* p$ e8 z |
zan
|