- 在线时间
- 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' `# w2 Z3 U# h P
%频率调制与解调的Matlab演示源程序
, Y6 l, x. Y' O* g/ j4 z%可以任意改原调制信号函数m(t)' y q2 K/ d6 c- y
%电子信息工程 杜怀超 091308305 4 m: @& X( T+ }: ?5 }
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
& d: o! x* l+ @7 Y8 G: b1 r%*****************初始化****************** h/ n: I j, Q- `& K; I
echo off j1 `& i" s/ [- m
close all
; |1 w5 Z1 ]5 R1 ^6 o6 L0 rclear all
- _ T) I4 b* s4 {) y! wclc- d& |8 Q# W3 W% K& H; z# |" q
%*****************************************
; W4 U( _0 A; T5 s b%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·! K- e, G. R$ m$ R! z9 I( b+ v% t
%****************FM调制******************** J6 X9 ]8 B. D R; N3 o
dt=0.001; %设定时间步长. S; q, C5 O2 {
t=0:dt:1.5; %产生时间向量, H; g* j) y2 L. l$ b" b7 C
am=5; %设定调制信号幅度; [6 i) p' \$ d' }6 k
fm=5; %设定调制信号频率
6 ^( u$ R0 t, ]" u* `mt=am*cos(2*pi*fm*t); %生成调制信号
: J5 G6 A7 Z8 G, ffc=50; %设定载波频率$ C. ~' v/ B4 h( l
ct=cos(2*pi*fc*t); %生成载波
, B5 G' x9 g9 H% N _kf=10; %设定调频指数; q3 [0 d# ]$ L( N3 t4 K# j% r
int_mt(1)=0;7 Z: f" N5 _* h. s/ J
for i=1:length(t)-1 " d7 J/ w& ` I; f/ i8 V
int_mt(i+1)=int_mt(i)+mt(i)*dt; %求信号m(t)的积分! ~3 j' Y: }- P" |3 p$ X2 O
end %调制,产生已调信号. S& ~6 y3 Q2 N7 q2 Y
sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt); %调制信号7 x/ t8 y9 S4 J' h7 m3 ^
%*****************************************
4 d% x0 s9 M6 x6 G2 Q%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
8 u. H" {' P* W/ W+ g" l* A%*************添加高斯白噪声**************& |3 y* N. M$ C/ N1 G( c
sn1=10; %设定信躁比(小信噪比), Q* i- x6 [5 z$ w- |. u; ?( w9 Y: _, D- ~
sn2=30; %设定信躁比(大信噪比)
+ I- S( U2 r9 p- n( nsn=0; %设定信躁比(无信噪比): v) Y7 l' P; `* t% ]* Z7 C
db=am^2/(2*(10^(sn/10))); %计算对应的高斯白躁声的方差! k8 _! {7 G. S- u g) D) g7 R
n=sqrt(db)*randn(size(t)); %生成高斯白躁声
+ x) ^% ]8 {( M( L8 }$ [5 X+ Nnsfm=n+sfm; %生成含高斯白躁声的已调信号(信号通, H, U" h# ^; L* l. e& B
%过信道传输)
) I5 I/ _' |& x; f2 f+ B4 |$ G: n%*****************************************' @6 q: R. w) {' T" {
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
) R9 G: T6 w* U& P( ]8 a4 W8 U+ o; q%****************FM解调*******************
4 ~/ G3 P6 q, Y$ |2 Ffor i=1:length(t)-1 %接受信号通过微分器处理
8 o& {5 _* g- y9 G diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;7 s# V! h; O- T+ |
end
( j$ V2 t+ C P) Zdiff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)& k! b/ y& s% B3 \
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;6 M5 R" e8 F1 E6 K8 j8 W' N( V
diff_nsfmn1=diff_nsfmn-zero;& w$ O4 M# a* f6 K P" Y
%*****************************************
" `! x1 X X1 v! |6 X%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
* _& |6 t* N! z) t9 i R5 Y%**************时域到频域转换**************
) K/ G" Q2 s1 V6 S* ]5 J$ J7 R Kts=0.001; %抽样间隔# \" a/ h, `, u
fs=1/ts; %抽样频率
- h% q$ \% K% d, L4 Tdf=0.25; %所需的频率分辨率,用在求傅里叶变换
1 Z* _0 z! W3 e0 H& v: _* D% 时,它表示FFT的最小频率间隔
5 L* e2 i6 j& t%*****对调制信号m(t)求傅里叶变换*****
1 w. y* E6 c; X J: V* Jm=am*cos(2*pi*fm*t); %原调信号- x/ `3 R7 V' r/ p9 z
fs=1/ts;
+ f" @, i, |6 I3 Yif nargin==2
W: z0 o+ c; l6 { n1=0;
, \1 k2 v: o, ~! d8 welse/ B1 P+ W$ m0 R3 Q5 o i1 u
n1=fs/df;3 J# n5 \! o3 n5 ]8 E+ K! p
end
+ }- U' C! z$ Vn2=length(m);2 e1 q7 j6 ~# I
n=2^(max(nextpow2(n1),nextpow2(n2)));
% }$ m0 \+ F2 w: [M=fft(m,n);% Y( s- E1 J! q0 U
m=[m,zeros(1,n-n2)];* I" H; e h" n! h6 H" m
df1=fs/n; %以上程序是对调制后的信号u求傅里变换
, P; c" @, W1 ~$ `; f7 `& BM=M/fs; %缩放,便于在频铺图上整体观察
' W8 f0 h- z1 A. y* Xf=[0:df1:df1*(length(m)-1)]-fs/2; %时间向量对应的频率向量
9 l+ Z2 k9 H' ]- k# ~7 V4 o' V) ~' q9 l# M
%************对已调信号u求傅里变换**********
6 E1 }: K- w+ g) {- H7 Bfs=1/ts;
9 q& z4 X1 e, J7 W) O T0 p! iif nargin==2
# m( y; e: ]: R* M$ J) K/ U, s. U n1=0;, u+ s6 C& U* ?9 a
else
4 M/ a: b6 B0 C n1=fs/df;
; @( }, K- @, O- A# Oend
# H; s v5 A" }6 p! zn2=length(sfm);
/ q5 L* `" k8 _- T4 w" y* qn=2^(max(nextpow2(n1),nextpow2(n2)));9 U/ c& g8 ]9 M, m ?, f
U=fft(sfm,n);
, p F- e7 }6 E$ du=[sfm,zeros(1,n-n2)];6 d# F' p3 l6 J
df1=fs/n; %以上是对已调信号u求傅里变换6 S9 S7 q) P+ I0 |& q0 I
U=U/fs; %缩放; H9 V% [, m [
%******************************************9 m# u2 U/ H' Y' B% _: ~9 ?2 R2 j
%*****************************************3 \1 j; s6 ~- h( d! {! b" r
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
' e& N; {1 Q# ]+ K: C1 n%***************显示程序******************/ [" X4 q& o: i# _+ E- f5 a
disp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')
' L* A- v9 f! E& ]) rpause- r8 R0 \( w- V$ D
%**************figure(1)******************
% N2 h/ Y9 j ]figure(1)
5 |- R; [) K! m/ Dsubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
, {+ j" F ^. @xlabel('时间t');( q5 W D# ^! y6 A$ Z
title('调制信号的时域图');
* h# w2 K" Q5 f6 J" \2 U0 fsubplot(3,1,2);plot(t,ct); %绘制载波的时域图$ R) [ b* a$ J0 R, K# t
xlabel('时间t');
7 @) Q8 l7 d! }: Z( q y& {title('载波的时域图');$ U5 y0 I, m' X5 }! |" i7 z
subplot(3,1,3);6 V) v4 G4 Y/ [7 v( c p1 W
plot(t,sfm); %绘制已调信号的时域图2 O! e9 ]1 s0 f4 M
xlabel('时间t');9 Z* H7 y3 O1 c; K7 ^+ {5 p
title('已调信号的时域图');/ g6 w( W5 c2 h- C" _
%******************************************& I/ n1 |) B+ A4 p
disp('按任意键可以看到原调制信号和已调信号在频域内的图形')6 I6 K) c( ^! h% x3 f
pause
' }, M8 O4 |* l0 w9 D1 E4 [%************figure(2)*********************
- _$ P: S `9 lfigure(2)- m2 ?0 O0 m, b5 n- l5 N
subplot(2,1,1)
! z, L$ n3 ?( `8 T) X! cplot(f,abs(fftshift(M))) %fftshift:将FFT中的DC分量移到频谱中心6 _5 S- N1 O1 @7 c- `
xlabel('频率f')- m% [2 r, B# z" C
title('原调制信号的频谱图')- U3 _( ?( ^: {% ?/ \) j
subplot(2,1,2)
1 s0 ]! G+ q' f `plot(f,abs(fftshift(U)))9 l, n. A# ~- s# h6 q: N
xlabel('频率f')
% |' {" c8 g; b9 f6 Btitle('已调信号的频谱图'); b' E1 E X/ W, }1 e
%******************************************( v" J5 m! q! V- y7 e0 x: a
disp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')
6 I8 A$ R. B, F4 `* C4 @- u4 _pause
8 u A6 W d' h, {%**************figure(3)******************# G7 M/ @9 A# B8 Z% S, V
figure(3)) @/ k* @0 L2 ^5 B
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图% L3 X% X+ K$ ^% b
xlabel('时间t');0 S) q( g" O( e! T
title('调制信号的时域图');/ K( V5 r5 F* S
subplot(3,1,2);plot(t,sfm); %绘制已调信号的时域图6 h0 {7 G4 M b' C0 G: i
xlabel('时间t');
! L7 _, `; K, x6 O% X* Dtitle('无噪声条件下已调信号的时域图');" V3 c5 u) d' E3 [. d2 m+ e
nsfm=sfm; ) k- Q8 \, {) q
for i=1:length(t)-1 %接受信号通过微分器处理# ?; O8 O, h. ^( f5 N7 @
diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
) X- J% C5 M' A" H* @end
. i% n l" F( J5 W0 idiff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
. X; c" Q) [7 @zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
6 z1 n! R6 l. M6 ?5 r6 w8 Wdiff_nsfmn1=diff_nsfmn-zero;/ b* Y/ G2 u# M( D
subplot(3,1,3); %绘制无噪声条件下解调信号的时域图
0 t1 t+ U1 t! c* ^plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');% W" w1 ]$ w P' Z* x- V
xlabel('时间t');
7 g2 m2 ?: }3 l# g' B* Btitle('无噪声条件下解调信号的时域图');
; U$ K1 s; i; W! h3 ?%*****************************************
/ W5 t+ K2 o y/ B. }& j2 W+ I7 fdisp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
8 S0 _. W5 @3 |6 n" [7 F2 Ipause) [/ `- h) X* D7 |, z3 E
%**************figure(4)******************
' D5 s8 R7 ^6 g1 |: f3 Q3 mfigure(4)7 H; Z) O3 ~: Y3 `" L. g" [( `9 X
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图4 `/ o- [; B+ r3 m1 V( r
xlabel('时间t');$ ]5 R: f+ ~- O4 Z
title('调制信号的时域图');
; f5 i6 j# V0 c1 mdb1=am^2/(2*(10^(sn1/10))); %计算对应的小信噪比高斯白躁声的方差8 ?5 o; S$ c# [. Z Q& S
n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声
6 r1 P( i6 n1 L! j `nsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通
: ~$ L/ y5 R. C# g% %过信道传输)9 A0 Y2 [; Q0 ?/ c9 M7 @) g# | d
for i=1:length(t)-1 %接受信号通过微分器处理
) r" O- }; t3 P6 Z diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;, C1 d) M3 n; C' u- V2 w9 V
end+ m3 z1 n: \: _* C
diff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包络检波). }0 a$ q; d( n- l
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;- U, N& j: x' |/ W7 m$ F
diff_nsfmn1=diff_nsfmn1-zero;
* e ~ _( Y* [" p/ _subplot(3,1,2);; z q4 d! f7 w3 V+ V- B6 t( G
plot(1:length(diff_nsfm),diff_nsfm); %绘制含小信噪比高斯白噪声已调信号的时域图* i: A* X2 s) M
xlabel('时间t');
. K2 u Q$ ^- z9 ]' [. ptitle('含小信噪比高斯白噪声已调信号的时域图');6 C: r$ U' o. G# N0 X
subplot(3,1,3); %绘制含小信噪比高斯白噪声解调信号的时域图
7 t5 q8 V0 a! w2 R& Iplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');0 b+ j6 y C3 n' B# S
xlabel('时间t'); - S: t0 u* T& Z3 m% V0 G# R, o! B
title('含小信噪比高斯白噪声解调信号的时域图');
# X4 o* _+ g1 C9 e; h3 g%*****************************************$ p# N4 w4 C& v! t# O# Y) c4 J Q
disp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')8 r3 X- i* j- w1 {" ]# t
pause# \4 {' \. E* Y6 A5 I3 V
%**************figure(5)******************2 C& v! p: _4 h% ]
figure(5)# A3 u) O( F0 D7 x8 |# b* T) }* n
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
" b! Q# Q8 J0 b8 vxlabel('时间t');
6 R% Z' F% Y* b9 a* l @- H' |title('调制信号的时域图');% r' k' L# I7 _
db1=am^2/(2*(10^(sn2/10))); %计算对应的大信噪比高斯白躁声的方差
2 j% n* }! ] n8 w9 P! k0 w; [: E: Fn1=sqrt(db1)*randn(size(t)); %生成高斯白躁声
3 Z3 g5 E2 G8 r0 h) J3 ~nsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通过信道传输)( s9 Y) l: ^! B2 F1 o
for i=1:length(t)-1 %接受信号通过微分器处理
3 G) }. _" V( d4 r% U diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
. b6 P4 q! J) P! I5 Z7 dend$ i5 s8 X7 T. x
diff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包
2 {/ b1 q" D% f5 U" {5 d% %络检波)6 W( l! f5 I" T! Y% e
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;( q7 D1 u3 H6 o6 g
diff_nsfmn1=diff_nsfmn1-zero;
( ^: q' _; v. f1 [9 ]subplot(3,1,2);: s' b" ~. I9 d1 e) T
plot(1:length(diff_nsfm1),diff_nsfm1); %绘制含大信噪比高斯白噪声已调信号
2 L% o9 d. k* w+ ]2 V( m% %的时域图' |; e' E. I# O/ i2 F2 `
xlabel('时间t');7 Y+ f* Y) v/ m4 |
title('含大信噪比高斯白噪声已调信号的时域图');( b4 d+ b0 O4 N$ v
subplot(3,1,3); %绘制含大信噪比高斯白噪声解调信号, ]/ e" n" A! P5 X$ J
% %的时域图; K: l% C6 t: T# R$ F3 E3 b
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
N( E/ L3 d, W7 t; hxlabel('时间t');
9 j' a- C" m+ l4 i3 xtitle('含大信噪比高斯白噪声解调信号的时域图');
5 r7 z: K* Z6 @% m: P, K$ A%*****************************************
/ [0 N% L9 S$ F0 Y1 t%******************结 束*******************. v0 C# e! M, l0 S5 H
0 f$ S8 c5 p! |, f' G3 d' _6 y
& Y) {% `; C9 M
|
zan
|