- 在线时间
- 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
" J* g* F. G3 h1 T! r! u4 k* ~%频率调制与解调的Matlab演示源程序
0 ~, ~4 I ?/ P1 W a' S q( l3 w) P2 |%可以任意改原调制信号函数m(t)
& g/ z% ]1 @" e0 ~, r' d! C%电子信息工程 杜怀超 091308305 : K1 {: x$ l& x9 w* A/ Q
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·4 C; l# b& m, d& h
%*****************初始化******************
' _9 l6 N7 f: n; U4 z. jecho off 8 l8 _( X4 p- l" c. L
close all
8 l, U5 p/ w& o! `/ jclear all
: J) \+ P4 B9 b; ]% @. U. V) qclc6 i+ z. t) y2 [1 B ~, j5 a
%*****************************************
+ `, J' E( G. F9 y1 |/ K( |%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
; U, ~" w0 o3 O) P- ` M/ h%****************FM调制*******************, _: B9 b/ n& B4 J. o3 r
dt=0.001; %设定时间步长
, T' G6 {+ ^. U$ I* c- Mt=0:dt:1.5; %产生时间向量# y0 J) r/ d3 e; }; n7 U
am=5; %设定调制信号幅度
# I" V5 b U1 s; R9 Vfm=5; %设定调制信号频率9 [2 i6 z* D% d5 C' G( D) T( D
mt=am*cos(2*pi*fm*t); %生成调制信号
{. N! Q ~1 ?) Pfc=50; %设定载波频率
# r( U K( v9 f9 h6 nct=cos(2*pi*fc*t); %生成载波' U/ v- X" p9 H
kf=10; %设定调频指数2 b; ?* E- r+ f+ P: H
int_mt(1)=0;
. ~7 Q3 r7 T2 ?7 h/ d1 nfor i=1:length(t)-1 " e& g- M% }2 J' Z4 o8 w
int_mt(i+1)=int_mt(i)+mt(i)*dt; %求信号m(t)的积分' |" i2 u6 K Z+ B
end %调制,产生已调信号
4 q9 e* d! E/ \. k' Osfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt); %调制信号* q3 F, C8 Q) \: V! F& ^! g+ X+ U
%*****************************************6 u! E, o; s/ S' [
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
3 h3 }$ }, f5 z9 U- K V8 H, C+ r%*************添加高斯白噪声**************$ @0 ]; B4 C3 W
sn1=10; %设定信躁比(小信噪比)5 h7 P" D/ n$ G& C
sn2=30; %设定信躁比(大信噪比)4 ~- Y7 d! m4 A
sn=0; %设定信躁比(无信噪比)9 m$ s8 |. h( B9 Y
db=am^2/(2*(10^(sn/10))); %计算对应的高斯白躁声的方差
) Y. i, C7 t, r: c% q( sn=sqrt(db)*randn(size(t)); %生成高斯白躁声
5 k$ \: k( t" H# z1 G: s' rnsfm=n+sfm; %生成含高斯白躁声的已调信号(信号通1 k0 h5 }- z7 P4 U9 `; {
%过信道传输)
9 y, g% P& g9 p# ?$ u6 |) C( O, X% ]%*****************************************
5 Q% @* W3 P4 B0 M. B0 V%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
2 q, D e* ~% [6 o) Z" I%****************FM解调*******************
* \5 B8 W& D5 |' R: }+ O) Mfor i=1:length(t)-1 %接受信号通过微分器处理4 `7 u/ [$ h1 H) ]
diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;% q) I; A$ ~ `# e: L
end9 Q$ m5 j# |0 O2 @; {& h
diff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
, @* O3 [1 F8 a+ V# x* fzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
g4 K% [) T8 p% Bdiff_nsfmn1=diff_nsfmn-zero;
! b' F+ g/ i! x7 Y( z%*****************************************0 c8 h5 o8 @1 G/ y
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
! [$ `$ [# d+ v; s: X! D0 ]+ V& \%**************时域到频域转换**************/ p9 {; H5 J# z8 S8 o
ts=0.001; %抽样间隔
2 {" c$ B4 n4 {* q9 Z" f( s" \fs=1/ts; %抽样频率
: X+ f9 e9 q6 j5 M* y1 ?df=0.25; %所需的频率分辨率,用在求傅里叶变换+ `& H; l6 ^- w, I
% 时,它表示FFT的最小频率间隔
+ x1 T( {$ z ]3 y5 [+ y0 |%*****对调制信号m(t)求傅里叶变换*****- F3 L. L2 y+ S- R! r: g
m=am*cos(2*pi*fm*t); %原调信号
% B( ?; x+ u* R- `8 P- @7 Xfs=1/ts;
% }7 L/ K7 a. Zif nargin==2
* f. P/ b2 y% L- ^5 _! u n1=0;
1 B2 }2 J" _# Y/ r0 Z# W" w' ielse
" G9 k1 [- i `: `, |/ w" U" _ n1=fs/df;
% c$ Q: h% r9 d6 G0 Send/ j2 x- C! L9 V6 A" t3 y# g
n2=length(m);
" ~& F' F. Y) r0 U; ?; [+ [. ?& \- Nn=2^(max(nextpow2(n1),nextpow2(n2)));
0 N1 ]; O3 O4 v8 _3 N" h1 H$ R! ~M=fft(m,n);( L5 c6 d! G9 d% K2 Q
m=[m,zeros(1,n-n2)];2 w% q4 L/ Q0 N: |
df1=fs/n; %以上程序是对调制后的信号u求傅里变换4 b T1 G8 _+ r! B: I. h; Z
M=M/fs; %缩放,便于在频铺图上整体观察* E- H' S9 S& S. Y! m) M \
f=[0:df1:df1*(length(m)-1)]-fs/2; %时间向量对应的频率向量
# \4 z$ z9 g! A( ~! c5 }, C$ C( g) u. x" U3 t4 J% {, a1 L
%************对已调信号u求傅里变换**********4 h8 G6 Z/ a- y5 N: C1 @! Q
fs=1/ts;6 v5 m; Q& w" N& N. v2 y9 p0 H; j
if nargin==2 A: G3 r5 { _" K. {; c
n1=0;
! ~$ P1 h& A# Z& n, S3 gelse. E9 O5 t0 `; ^" l6 J
n1=fs/df;
3 _) o- B5 J, x' P: Hend! [) `! a, ]8 [% Z; d/ g" a, H
n2=length(sfm);) g8 Z0 s' y- t6 k, {
n=2^(max(nextpow2(n1),nextpow2(n2)));) F- a( Z; d1 t: j( i. Y Y
U=fft(sfm,n);1 K6 ^: h! K, i2 U+ _
u=[sfm,zeros(1,n-n2)];
9 N+ L: R. ^$ h: ndf1=fs/n; %以上是对已调信号u求傅里变换
( @3 }$ [& s+ g5 bU=U/fs; %缩放' |) ?6 _ k9 N* i; u6 b
%******************************************
. M l6 C1 O N1 G( l& ?( b%*****************************************; t: u/ @' g! `+ k. [8 p9 A
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
3 i" _0 ^4 Z/ g5 J# H%***************显示程序******************
5 A/ l, z, u+ ], g0 {) udisp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')7 |2 u. _ x* K% ?' g+ G9 q
pause$ D' P$ n& |2 c& N1 J3 g
%**************figure(1)******************
6 D/ W' l% v- w) zfigure(1)' ]! W0 v! ~7 g- g# r
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图! o6 W1 S* N, x/ N! Q0 }0 T
xlabel('时间t');
% y |* ]$ c! ~2 _) Ctitle('调制信号的时域图');
2 ~% ~ P W3 ~6 T C1 esubplot(3,1,2);plot(t,ct); %绘制载波的时域图" i: u$ v8 F1 {7 g' f8 }, Q' b. H
xlabel('时间t');, s4 X" q: E0 B4 M+ d
title('载波的时域图');
3 k; u0 \8 a9 Q- g* ysubplot(3,1,3);! \( }- G3 V! ]. v2 I- G3 D4 H) T
plot(t,sfm); %绘制已调信号的时域图
w5 ?: n) C8 H$ Uxlabel('时间t');. }% W: b! ?. f# T( A, d( Z- ^7 s
title('已调信号的时域图');* Z/ ^9 Z4 A8 D5 E7 j( ]
%******************************************( }2 Q4 H s: u- ?4 @+ j8 V$ i" e
disp('按任意键可以看到原调制信号和已调信号在频域内的图形')
' ]- i9 y" K" N8 ~& D/ q5 Apause
3 O: b6 E- h# I$ p+ S%************figure(2)*********************
* A+ s6 M. P9 S) V4 P7 s4 ufigure(2)( R5 k% c" e2 d y3 G8 ^& S
subplot(2,1,1)3 l6 y$ _. _& T( p) e
plot(f,abs(fftshift(M))) %fftshift:将FFT中的DC分量移到频谱中心' }1 }1 f' v* o& i
xlabel('频率f')
" D% B4 W/ a' U' t2 ftitle('原调制信号的频谱图')1 H$ B* W" j0 _7 e$ a
subplot(2,1,2)8 z3 o; o, |& c: B+ j. o/ h
plot(f,abs(fftshift(U)))
1 j9 s- a+ k2 r1 zxlabel('频率f')
5 f. q* c: ]" i3 O6 ^title('已调信号的频谱图')
; M- v, f# q- ]%******************************************, S( C# X3 c* k, _: F( w5 N
disp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')2 f+ T T+ x9 s9 r, S9 T' H. a
pause% s8 N+ l% Z: x& N% B& k
%**************figure(3)******************
5 }; D4 _$ M& ]/ S9 Y# rfigure(3)
0 m; b9 }- W4 ]1 X! Rsubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图. w/ p% ~9 o" k8 l J
xlabel('时间t');
; u0 o3 F$ W- G, ~ Z$ Q$ Mtitle('调制信号的时域图');
7 _2 x# L. W/ L' Z0 msubplot(3,1,2);plot(t,sfm); %绘制已调信号的时域图9 o% X5 g# l1 ]8 k% B0 R; i
xlabel('时间t');6 K$ b d; W. w* t$ u0 `; \
title('无噪声条件下已调信号的时域图');
* a s6 }5 ^; `2 c# t( ?; J* wnsfm=sfm;
z7 n& q" e. p& y$ r9 Afor i=1:length(t)-1 %接受信号通过微分器处理
) t# @5 a8 M4 X0 I% d! ~! F diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;% p- _" v n s- V, }4 {
end
- O# c* J6 Y S+ O- }" N5 r4 x) kdiff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波), |9 G7 { Q S% o1 F
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
# n+ W5 S, k- P' R( ^: m& l7 Ediff_nsfmn1=diff_nsfmn-zero;) Q- s6 l3 q8 C
subplot(3,1,3); %绘制无噪声条件下解调信号的时域图 v" s5 v+ J' Q1 b' Z- Q( q
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
# \$ d0 s& G" t# l sxlabel('时间t'); 2 c }) p" k H) z1 ~6 _
title('无噪声条件下解调信号的时域图');4 ]6 ]0 d6 e0 G& O1 c
%***************************************** S: L2 { [6 o6 ~6 a+ s
disp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')% k" t8 [" K4 y6 ~$ a3 q4 k
pause
- J- r! a: v( S/ ^2 k%**************figure(4)******************$ \2 u" F( y5 w' A2 Z/ g' `+ x1 v
figure(4)
; Z* `! y3 ~# U/ fsubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图. n7 b Q2 U7 F6 O
xlabel('时间t');
1 C- w" A5 s$ S! A5 P7 V3 ititle('调制信号的时域图');
+ V0 h+ P, \, ~8 x, k$ Zdb1=am^2/(2*(10^(sn1/10))); %计算对应的小信噪比高斯白躁声的方差
$ h @$ T' m1 |4 y5 Q6 Cn1=sqrt(db1)*randn(size(t)); %生成高斯白躁声3 x% s7 G+ q0 ]
nsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通
$ ^) _' E- v& w% %过信道传输)
! j/ X' e; n, e d7 M/ C4 W9 r: kfor i=1:length(t)-1 %接受信号通过微分器处理
5 x. y0 j/ q7 x9 g diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;. Y) X, T; {% a5 w. Z+ `
end5 R% t; j/ x0 Z6 k
diff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)" O7 v C: _/ q% y- T/ J9 v# A- I
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;3 D/ x0 m2 c; n& `' H7 O( F
diff_nsfmn1=diff_nsfmn1-zero;9 o8 D, S, f8 x
subplot(3,1,2);
* P' J/ j$ {, S" pplot(1:length(diff_nsfm),diff_nsfm); %绘制含小信噪比高斯白噪声已调信号的时域图
; C7 i3 s+ P, x! w" d" {xlabel('时间t');
/ V3 O$ ]7 s3 K0 l% ctitle('含小信噪比高斯白噪声已调信号的时域图');
; @/ z3 D( M7 z$ usubplot(3,1,3); %绘制含小信噪比高斯白噪声解调信号的时域图
- c# d" m7 ]. y8 r% f, [plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');, v! o, N- }. m% o) d( W
xlabel('时间t');
5 q1 U4 B8 Q Y! U% Ptitle('含小信噪比高斯白噪声解调信号的时域图');
! F) Q- W% E# c1 n7 [ K%***************************************** y" l/ l# j6 `6 ^1 x
disp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
9 [) x& X+ [; ^) S+ o6 Lpause
- A9 l) ]5 ~, q0 b; E+ y' V1 `%**************figure(5)******************# t4 @7 Z8 ?7 p
figure(5)
- e, j: [7 o1 L: j' Gsubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图0 l5 n+ \# h8 G) u2 R% d
xlabel('时间t');
* s! i! E9 v& g! r' Y1 [title('调制信号的时域图');9 B3 B1 O0 o/ G z8 n( |- o R* G( v
db1=am^2/(2*(10^(sn2/10))); %计算对应的大信噪比高斯白躁声的方差% C+ f% F$ V. O! ^. t9 P
n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声
2 _8 f( y" k1 x6 @nsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通过信道传输)
1 N$ M# [+ ^' _. }" V8 k$ efor i=1:length(t)-1 %接受信号通过微分器处理9 \/ T1 _! D, I t- m% e
diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
; H D1 b2 b4 u) Vend/ Y" ?( J6 V8 O
diff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包
$ a& T0 T. E) x) k% %络检波)
9 G( s N2 ?" p2 u$ `2 Ezero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
+ ]0 B9 ]9 `8 p. T% g5 J* jdiff_nsfmn1=diff_nsfmn1-zero;
* |4 A# ?! V9 dsubplot(3,1,2);
% {. N4 O4 I g' M# D% ?) w7 iplot(1:length(diff_nsfm1),diff_nsfm1); %绘制含大信噪比高斯白噪声已调信号% w. {6 i8 x+ O; k1 i4 Q1 N0 p
% %的时域图
/ b* @* `, r, ^7 t, R% xxlabel('时间t');: z$ M" z6 Y( ^8 v& |
title('含大信噪比高斯白噪声已调信号的时域图');
k6 r- D5 _' D* ~% `% w5 F3 Asubplot(3,1,3); %绘制含大信噪比高斯白噪声解调信号
* t4 f/ J2 ^, K; Q! S0 R; _0 I% %的时域图0 ~! H; b- |. r5 R0 J
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
* B) A" Z" D: G- R$ Rxlabel('时间t'); : _& p3 b! f8 `; ], H% Y7 i+ N( F
title('含大信噪比高斯白噪声解调信号的时域图');# ?- v4 U7 q7 A& H$ U1 M7 U8 e
%*****************************************
* C, p8 ^/ \& `, a/ k%******************结 束*******************
" B) g4 X. H2 L& y" E
9 W" ^% y. r; F( I
+ j, U, V; a# @" S: Z |
zan
|