- 在线时间
- 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调制解调系统.m9 ~. O4 A! Z0 ]* Z: O
%频率调制与解调的Matlab演示源程序, D5 r) d' V( O
%可以任意改原调制信号函数m(t)
( D9 q3 g% W) m& I3 d& R7 V%电子信息工程 杜怀超 091308305
4 O5 V4 t- q: f7 y/ I& x2 V/ a%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
2 U* a) X3 [: _2 X# W%*****************初始化******************
4 t2 i9 L' G% t: j _8 Secho off 8 R" N) `4 U1 ]0 T9 C! G4 J) h+ i
close all# g7 \( O, j6 {; |
clear all
1 a5 O* t/ c, l1 k" Bclc
' \0 S: ^4 L9 D9 P3 G%*****************************************2 ?" ^; S! s& o
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
( ?3 N$ s9 C% P- a4 @6 a: @3 E%****************FM调制*******************( [. ^' y4 z4 N* ^2 y, f; P5 E
dt=0.001; %设定时间步长" ~$ e1 _" m2 @0 l+ Y
t=0:dt:1.5; %产生时间向量8 [. P, z( N& q. y$ Z/ z7 O
am=5; %设定调制信号幅度
+ v: q) H1 r( ofm=5; %设定调制信号频率% f% i& G$ S- l3 \' }
mt=am*cos(2*pi*fm*t); %生成调制信号
! t. O$ m' P, A# q4 C+ G, S( afc=50; %设定载波频率
1 z6 u n$ [5 [, S yct=cos(2*pi*fc*t); %生成载波' U4 i, p1 Z8 d: E& A
kf=10; %设定调频指数" L% m2 D* f3 f; c7 v1 U c
int_mt(1)=0;+ i0 o. Q% a6 ^; G
for i=1:length(t)-1
( a4 b' d& g/ P, Z int_mt(i+1)=int_mt(i)+mt(i)*dt; %求信号m(t)的积分' V2 O" J8 K1 R
end %调制,产生已调信号" \6 f+ h' j$ V( U2 B3 \( f @
sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt); %调制信号7 Y3 X0 Q! z/ q! l. \: Y& \& t
%*****************************************# i* o1 a& {+ T) I0 n/ Y! q' W
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
, T% }6 ]6 B9 m%*************添加高斯白噪声**************8 `& M" a% F% W
sn1=10; %设定信躁比(小信噪比)
2 o, k, U- g: w/ _sn2=30; %设定信躁比(大信噪比)
) z% m. R/ Z9 S3 f9 a8 @$ psn=0; %设定信躁比(无信噪比)
) j% g2 B5 z$ H5 S$ Vdb=am^2/(2*(10^(sn/10))); %计算对应的高斯白躁声的方差 P$ e8 r( q2 L4 N
n=sqrt(db)*randn(size(t)); %生成高斯白躁声& O2 `: m9 g! ~6 l
nsfm=n+sfm; %生成含高斯白躁声的已调信号(信号通$ S& o) D& I. C6 s) h N
%过信道传输)4 T/ P8 I: @5 ?6 q4 K; Z
%*****************************************. ^8 S( g1 j' Q! m) j
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*· I: ~3 u: J5 y* y1 c
%****************FM解调*******************0 f6 e Q3 O: M- P: R
for i=1:length(t)-1 %接受信号通过微分器处理 {- A, O% k8 r1 G% L
diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;2 ~4 V' Y& n) e( ]2 d5 C. c
end
+ I4 Q/ F* h0 D. udiff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)/ ^2 q1 K, v3 k* h! i) p% m
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;- X0 r' B; c! ?
diff_nsfmn1=diff_nsfmn-zero;
: i- X* H- x1 d8 @" ?%*****************************************
9 ?+ K/ {2 H# ?0 Z2 Z; \" G%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·* D7 X B. i% w
%**************时域到频域转换**************3 J6 @# s/ W- ~
ts=0.001; %抽样间隔
, T8 M9 y. k* c( h7 {fs=1/ts; %抽样频率; I( j! f6 z* A$ X. z. B
df=0.25; %所需的频率分辨率,用在求傅里叶变换
: ?0 y: n( S) y" n% 时,它表示FFT的最小频率间隔! P6 b6 t3 W$ G0 M
%*****对调制信号m(t)求傅里叶变换*****
! D4 d0 }& J! Q! vm=am*cos(2*pi*fm*t); %原调信号
! k' v7 Q" ~9 J8 Lfs=1/ts;" ]. d1 ^( V/ u6 Q* |- \6 ^0 C5 d
if nargin==2! d9 j7 n; C' }: ~+ O0 W
n1=0;) y5 }3 J& v$ E0 ~* b% Z3 {! W
else
1 j1 u7 A: X' @# a2 w# T9 \! D n1=fs/df;! n3 e- }0 j7 }. T5 U) O$ C* s$ q# s6 N
end4 a9 E5 Z% E* `$ Z* d" {
n2=length(m);: [( K4 @8 ~) b! O$ q" l; w. _0 B
n=2^(max(nextpow2(n1),nextpow2(n2)));$ Z2 c6 F0 T* x1 r
M=fft(m,n);
) B4 [% u8 }/ ?5 x0 Y0 L- \0 b4 }. l4 J. |m=[m,zeros(1,n-n2)];& B" F+ `& V* u) D, F ?
df1=fs/n; %以上程序是对调制后的信号u求傅里变换* b- J- u! c4 u$ u# {% W
M=M/fs; %缩放,便于在频铺图上整体观察, }) m" {8 f* p' m6 c1 f# _
f=[0:df1:df1*(length(m)-1)]-fs/2; %时间向量对应的频率向量
: f, q% @8 x' O$ q8 i& r9 O) d) a# n6 b) @8 C
%************对已调信号u求傅里变换**********) S+ Z& Z) `# ~" B/ m
fs=1/ts;8 t& f4 c2 l" e. b* z
if nargin==2
+ b$ e; F* _7 T+ I1 V- k n1=0;) X; b d/ C4 p+ n* m5 m+ i7 j3 q
else, x: k" |3 |4 y; A; M9 |
n1=fs/df;
6 [. A y# p% [9 a2 ^end; N4 _( M" ]0 ^) N# i
n2=length(sfm);8 [) g' Q- j# \" f7 W
n=2^(max(nextpow2(n1),nextpow2(n2)));$ h% ^& I2 u6 x% ^
U=fft(sfm,n);) \4 d% a1 C; u+ G! k* `
u=[sfm,zeros(1,n-n2)];
: l) d+ e( Z5 L' N+ s+ Y$ tdf1=fs/n; %以上是对已调信号u求傅里变换2 Y a' v4 r; X/ g7 b! Q- K
U=U/fs; %缩放
0 M+ C$ V7 j: t0 i6 c1 N%******************************************
f2 c0 L% L! j" g%*****************************************! d7 g' \/ `# }/ l: H
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
( l( q( s3 f9 f' m2 y4 Z! F! @%***************显示程序******************; n# G& [* A6 I7 k9 w8 [
disp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')# b, e: m) H; @2 e7 E( {# s
pause) a- B% P5 Z9 |
%**************figure(1)******************
5 F4 Y3 K: O+ u1 u+ I: |figure(1)3 |/ b9 b; j: l" c
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
3 d1 b0 }$ h' i/ @xlabel('时间t');* K+ E x6 U w( k# ~' @
title('调制信号的时域图');
?4 Q" N" m) _: n% e! Tsubplot(3,1,2);plot(t,ct); %绘制载波的时域图# |, R3 D! F4 @
xlabel('时间t');- Q s. A: h) t6 J
title('载波的时域图');
+ a1 m6 M7 E) {0 H3 A7 f8 rsubplot(3,1,3);
3 s7 T% w5 B( p( O L f- Y3 wplot(t,sfm); %绘制已调信号的时域图
2 S; A$ I _- l9 k; @xlabel('时间t');
+ `0 h% \+ G; Ntitle('已调信号的时域图');0 X6 G$ u e3 r: A
%******************************************/ v0 c: W+ F# B3 o
disp('按任意键可以看到原调制信号和已调信号在频域内的图形')2 i( D2 \% ~ }' p
pause) `4 ` H5 M5 @
%************figure(2)*********************
% Z# I$ k; J# R5 M, Bfigure(2)
2 c* ~( ^' I8 ]5 c z! y& fsubplot(2,1,1)
2 k/ Y ]: v0 ] gplot(f,abs(fftshift(M))) %fftshift:将FFT中的DC分量移到频谱中心7 ]: [8 Z c; S3 S8 D! n
xlabel('频率f'). ?* Y7 w7 ^$ c& t4 z" Z
title('原调制信号的频谱图')0 ^& B+ m" k* n$ t6 U
subplot(2,1,2)
3 X- k- h4 b0 wplot(f,abs(fftshift(U)))
& W! ]% y5 k9 S2 R zxlabel('频率f'), S5 @$ h" }0 i+ ] L
title('已调信号的频谱图')
) Q% q8 h; `5 y# K%******************************************
, j i3 g9 A4 b3 T0 }disp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')5 R. ]* m0 ^/ J- C3 m$ ~
pause$ k9 d8 m, V6 o* Z& }
%**************figure(3)******************
) z( B# _9 ?. y/ Z3 r" T0 `( ufigure(3)5 [3 H* |! N8 j" q# u
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图$ `& ~% u4 _0 @6 q! L2 i- h& w
xlabel('时间t');& d, D7 P" N- u7 ?6 _* _( `
title('调制信号的时域图');1 x+ [6 P r" V5 v0 a' k7 H
subplot(3,1,2);plot(t,sfm); %绘制已调信号的时域图
& d. F3 Y# N& u( C( u8 z+ M. \xlabel('时间t');
. Y/ Z" m- G9 l& Wtitle('无噪声条件下已调信号的时域图');8 G. X3 g6 c* ^8 {4 Y3 J! N% t2 u
nsfm=sfm;
7 x& @! s8 z( o( a1 R6 F5 `for i=1:length(t)-1 %接受信号通过微分器处理
; U' W' }; j$ k# i/ c/ p7 \7 S diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;# L3 |* K0 f1 c6 Q
end3 q* ~! J( W) F0 S N& I# H( {
diff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波) M3 z @7 t* w7 I
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
; Z) m: L% q* Y- ~' T8 [diff_nsfmn1=diff_nsfmn-zero;
2 v5 K4 c8 j/ Y" p+ ysubplot(3,1,3); %绘制无噪声条件下解调信号的时域图
4 Y! R7 `# \/ N( D! a& Kplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
6 d' a3 v2 s' ^6 V2 {. w1 C fxlabel('时间t'); 0 r# h. _5 V0 L/ O' y
title('无噪声条件下解调信号的时域图');
$ o# {. J8 b+ U%*****************************************, E5 A+ K# T% f3 U, t2 t
disp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
2 r( b5 }. T4 }9 X' r- Z% A& Lpause
z6 S7 S4 B( ?! N' W2 y%**************figure(4)******************9 n {6 d& J3 R5 k6 K
figure(4)9 k0 y" s* b2 b2 ]3 Z2 N* f
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
+ t; n5 [' ]' `6 ]xlabel('时间t');# l9 F1 R0 j% a$ ?
title('调制信号的时域图');+ V( U7 E2 k& @$ n
db1=am^2/(2*(10^(sn1/10))); %计算对应的小信噪比高斯白躁声的方差& _" U, V/ [4 C4 d( D
n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声
% E0 o& {( N2 q% _' |2 hnsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通
" s9 g9 ^1 `! \# q4 @% %过信道传输)1 \( o: p, L; Z+ X9 F
for i=1:length(t)-1 %接受信号通过微分器处理
0 k W! n( o& J diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;6 Z& T5 U* d& V k" R* n8 E/ r
end
3 s4 E6 [. [" ]/ P4 Q% odiff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
8 i: }/ @& j8 J; q% K7 b2 Qzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
$ B) L- |% L. @4 h% H- k. Q y9 Ndiff_nsfmn1=diff_nsfmn1-zero;2 k( m/ \" y5 [; f9 ^/ s! n! C
subplot(3,1,2);2 j- u% }. B2 k* g6 j3 |' H& r; }" H
plot(1:length(diff_nsfm),diff_nsfm); %绘制含小信噪比高斯白噪声已调信号的时域图" G& |6 e3 J( {/ m
xlabel('时间t');
6 f% x) H8 \. i3 E: J! Q2 F1 T/ Qtitle('含小信噪比高斯白噪声已调信号的时域图');2 ?+ F- Q' i4 V- F
subplot(3,1,3); %绘制含小信噪比高斯白噪声解调信号的时域图4 h" W, K$ N5 J) Y! ~8 h$ i1 `
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');& ?/ ^2 v# a8 {- s
xlabel('时间t'); ) T z8 P+ d$ h$ T
title('含小信噪比高斯白噪声解调信号的时域图');$ q$ A2 i. \# Y7 R. t
%*****************************************
5 N, S- T7 K9 xdisp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
9 @+ h% Z, p5 f( q% m7 ?' apause
2 {4 l! o3 A0 s( H' p%**************figure(5)******************7 }" G& L2 @8 {' t, m( h
figure(5)
6 V- \- K! E9 e1 D- A9 o8 Csubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
f! {: l! v: o& a) }3 ^1 v Zxlabel('时间t');
% f% \" k. g! K) s6 x, X# [title('调制信号的时域图'); W, E( f# S- ~+ {0 Z- U: U5 e! K
db1=am^2/(2*(10^(sn2/10))); %计算对应的大信噪比高斯白躁声的方差
) L1 Z' @9 R/ ?n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声# k/ R( N) E* w0 f, P0 L
nsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通过信道传输)+ j/ H) K a) g/ r0 o. U
for i=1:length(t)-1 %接受信号通过微分器处理' i/ R* k. n7 \! o
diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;- L2 ]' S6 g4 N M& D' L
end
4 y" P$ D' J* x3 u0 F0 Cdiff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包% ?$ h4 C( o( c8 n: T, h3 r$ ]
% %络检波)
$ k6 ]! o: S4 S. ~zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
: k4 Y7 W; i3 q' _+ Cdiff_nsfmn1=diff_nsfmn1-zero;
& f4 O/ U1 b# hsubplot(3,1,2);$ @: E) |6 m7 i/ p7 @
plot(1:length(diff_nsfm1),diff_nsfm1); %绘制含大信噪比高斯白噪声已调信号
, |2 y6 W! z( F* F) s, p" N! l% %的时域图
8 E6 I( E" \7 [8 F* n8 hxlabel('时间t');; j: N, J" B3 q8 _3 q
title('含大信噪比高斯白噪声已调信号的时域图');
& Z C6 M2 W- `- l5 O& K, B) jsubplot(3,1,3); %绘制含大信噪比高斯白噪声解调信号
# n) ~8 W& O( q( ~! r% %的时域图 t+ A2 r; f3 B4 x- P A
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');* M% z; ~8 s# z T, F' R9 p! N
xlabel('时间t');
5 z+ d" |+ Y" }title('含大信噪比高斯白噪声解调信号的时域图');
4 x4 L' A! U" ^4 v6 w%*****************************************
* u% k. t3 f4 \. u: t8 p%******************结 束*******************5 L& F$ E# F5 N \
: G6 i$ o4 ^0 i- n6 \% J L( O
2 l0 I7 J2 P; S; z7 T( U. n' Z
|
zan
|