- 在线时间
- 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- a! ?- T# T/ e) \: O1 }
%频率调制与解调的Matlab演示源程序
7 Y: P/ Z8 K2 f& U, w* } y' k%可以任意改原调制信号函数m(t)
) \ R j* z8 \: V7 X; M%电子信息工程 杜怀超 091308305
, @4 z! R/ _2 c/ n, V A& C# S5 Y% W%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·* g5 z' i/ {; I3 p
%*****************初始化******************+ s: H* X7 d7 l* r, k6 i0 a
echo off
s6 J( _0 T: c$ l. }/ Wclose all. Y9 i* a) p" Q+ P# N0 d7 c7 S( J
clear all
; L- N' \$ h0 D# d, Wclc
' P! p; R2 \9 [4 O%*****************************************! }8 R: O9 v* q( m8 p
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
" a z" q5 C$ @* f. t. Y$ z% ]7 @%****************FM调制*******************
. O3 f" J$ } b& K" c( P& Mdt=0.001; %设定时间步长4 `0 _$ l! l4 P% g3 K* G
t=0:dt:1.5; %产生时间向量9 E; Y* f( r2 ]
am=5; %设定调制信号幅度
- Q# ^) r4 d8 v! e) Vfm=5; %设定调制信号频率
2 U* a# J7 O; x' y. z' z! Xmt=am*cos(2*pi*fm*t); %生成调制信号9 i" O7 T* Z n) _
fc=50; %设定载波频率# Y, i9 Y9 f, C7 {7 \
ct=cos(2*pi*fc*t); %生成载波
# G; a: @: K9 Q4 S+ g. ]* }+ x9 r+ `kf=10; %设定调频指数
2 c b' q8 e- n" R& ?int_mt(1)=0;
W+ n+ ?( t- n; @$ S. K* {for i=1:length(t)-1 2 X/ \% P1 s! e* V* `$ q( ^4 h
int_mt(i+1)=int_mt(i)+mt(i)*dt; %求信号m(t)的积分
, m5 J: c& \2 B4 T+ w% h1 a. d s9 Dend %调制,产生已调信号
% E, i5 {% d0 J/ G" ^8 \sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt); %调制信号
+ U% {) O% W. ?8 k) A%*****************************************9 m; v0 \# h- v3 v+ A- g
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
% a+ I& Q s% z2 o; ~% z0 h+ t%*************添加高斯白噪声**************+ C9 T( z! H: d9 Q: w
sn1=10; %设定信躁比(小信噪比)
; G, L; Y( K& w @sn2=30; %设定信躁比(大信噪比)
/ L. _6 A5 L+ j7 Osn=0; %设定信躁比(无信噪比)
9 p- n- `% g" n) c. xdb=am^2/(2*(10^(sn/10))); %计算对应的高斯白躁声的方差9 p3 o) g5 ] r
n=sqrt(db)*randn(size(t)); %生成高斯白躁声4 z/ S7 ]6 }) [( ]
nsfm=n+sfm; %生成含高斯白躁声的已调信号(信号通
* R ~) \. Q. D4 X* Y7 `%过信道传输)
5 |7 o. R( ` Q% X3 u, s5 e%*****************************************
& A O3 l$ B6 J& E) ^& a# B" H%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·% S% H! a5 q$ P2 E, g+ I. d
%****************FM解调*******************+ Z% T; F0 y+ \2 Y5 {
for i=1:length(t)-1 %接受信号通过微分器处理
! R; D# w, t% |' Q) [( Q! s diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;5 Z: Y y ~+ \+ b# Q$ r6 ~
end! E3 i1 J1 a3 I4 s+ b0 L
diff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)- H0 m! g7 L: c# k) O
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
9 ~4 r. x, q. [4 K2 N$ d3 D, ^diff_nsfmn1=diff_nsfmn-zero;
& p' t! _" \* z: L%*****************************************
. W/ f0 _$ `9 A0 j0 T1 R" ?5 g%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·9 x X$ l. R- y6 |! |$ w4 m
%**************时域到频域转换**************7 [- o4 W* E2 i4 X6 r. a
ts=0.001; %抽样间隔/ g3 P4 M: Y& D0 W4 t
fs=1/ts; %抽样频率4 l( s: _9 F V" [; h6 ] C S2 k5 |
df=0.25; %所需的频率分辨率,用在求傅里叶变换3 s7 R* l8 t, F7 i& N
% 时,它表示FFT的最小频率间隔
( ?! j9 T+ X6 f" |9 f ]%*****对调制信号m(t)求傅里叶变换*****- h8 h/ c5 h- O& g0 h
m=am*cos(2*pi*fm*t); %原调信号
, B; s* O' C; W* f3 B/ |. }fs=1/ts;
/ g: H3 l8 g5 zif nargin==2
8 E& u# o) u7 X( h3 b: m n1=0;& `! h6 ~5 `+ j# H
else
6 W6 W' z8 G$ w$ r1 S( U n1=fs/df;& O; \( d8 z. T$ ~2 T% q x
end, C' k) x6 x. B- {; L* C
n2=length(m);
( n3 g1 b3 Q8 J+ b( ]( cn=2^(max(nextpow2(n1),nextpow2(n2)));0 t1 m# Q0 @( q, J& w9 p; J
M=fft(m,n);" @' i9 y2 }* ?" b9 V
m=[m,zeros(1,n-n2)];! ?0 ^! d) O1 L( O
df1=fs/n; %以上程序是对调制后的信号u求傅里变换. o& o# ^! C0 G% `& V8 }9 G
M=M/fs; %缩放,便于在频铺图上整体观察
9 @, D- ?$ M1 Af=[0:df1:df1*(length(m)-1)]-fs/2; %时间向量对应的频率向量
0 k4 H1 {& G$ s( m6 d) r) u i* W8 M/ {' Q
%************对已调信号u求傅里变换**********4 I( D& W# Y1 n
fs=1/ts;
. r9 W8 i# G- y' d. O$ F$ sif nargin==2
, ?# s$ d6 l& {" Q8 f2 V. j n1=0; O9 q8 X" M+ q* o; A" C! }
else7 s& q0 @! m7 C9 P+ j
n1=fs/df;: Z9 |6 o& q0 a6 {5 [: F
end
& W* p1 s) a$ I% I1 s& ^0 hn2=length(sfm);
; @6 s3 r* q8 {! tn=2^(max(nextpow2(n1),nextpow2(n2)));! x- t% O( |) I! h5 ]
U=fft(sfm,n);
' C( l% G2 S( }, _6 ou=[sfm,zeros(1,n-n2)];5 X( R# q+ }( P# w% P2 x. x
df1=fs/n; %以上是对已调信号u求傅里变换" r9 J" b8 B& {3 S% `# G
U=U/fs; %缩放
# t' T; {( r7 H* S, _%******************************************1 v H3 U; d( I! }9 e
%*****************************************
. K5 |2 {( S: w+ u* c. {%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
/ _4 L/ [& ^* Q# D$ Q0 Y%***************显示程序******************
% X% `* T6 N2 o4 ^. L' P% `disp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')
) B/ a$ X* N9 t. K1 q: d/ O) [pause
! s! R& o) e' O%**************figure(1)******************
b5 S. k4 A5 p, g w P. ~; xfigure(1)0 E+ ]+ H/ Y! m' ?* h
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图- I7 p4 L6 h4 ^8 P3 Q3 A) r H6 p `
xlabel('时间t');( O, g( e& {3 _. w
title('调制信号的时域图');# w( c8 H& b: J' d2 N4 I
subplot(3,1,2);plot(t,ct); %绘制载波的时域图
) \4 H- c" t2 D; x7 Bxlabel('时间t');: `2 v* ^" [) ?7 s
title('载波的时域图');- I1 b8 `) o4 g9 Z* j
subplot(3,1,3);
9 J9 v5 D$ ^: O N6 k. E# S1 Cplot(t,sfm); %绘制已调信号的时域图# Y; X! t+ y2 S# C, t' R
xlabel('时间t');; \# D! u; E% B
title('已调信号的时域图');4 W7 O5 G8 H% X: ~1 K: m
%******************************************( @3 D! E) V4 l
disp('按任意键可以看到原调制信号和已调信号在频域内的图形'); z3 _8 t! a. Q* D6 `
pause4 M2 L! z0 ]) s+ \4 o+ L0 U7 n
%************figure(2)*********************
8 H" p- B! Y% J4 [. c8 h, Q" _3 jfigure(2)/ m& e9 g1 x0 V" C# g) l
subplot(2,1,1)& ]4 b3 M: L& G# G" c; F1 u
plot(f,abs(fftshift(M))) %fftshift:将FFT中的DC分量移到频谱中心
1 ^4 V; ^! [6 Y4 f) H1 Yxlabel('频率f'). }' r1 t. y# Y! M
title('原调制信号的频谱图'). D1 H+ ^) h% G
subplot(2,1,2)
6 l* {1 K% Y9 l jplot(f,abs(fftshift(U)))- M, t2 A& I7 ~& d. e0 q
xlabel('频率f')3 X; V- u1 s( ^
title('已调信号的频谱图')* ]' U( p, I8 q0 ~- \! h
%******************************************. @5 X1 H, L: z2 v
disp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')+ W- [! `7 S8 z& {6 g
pause
5 [3 C1 P# \4 B" h! I7 K% Z0 P%**************figure(3)******************0 Y; A9 z5 `: E- ?% s
figure(3)
2 ^% o0 Y- o4 d1 x7 u3 Y6 r2 Isubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图 y5 }( F. T2 w) ]
xlabel('时间t');4 [8 z# o( i( R) B
title('调制信号的时域图');7 M7 l, k$ {" Z; e/ e
subplot(3,1,2);plot(t,sfm); %绘制已调信号的时域图; o6 T6 i* r" n Z
xlabel('时间t');
1 ~& S' N* T" j4 s3 u- {title('无噪声条件下已调信号的时域图');
& W: r- ] M7 v# b1 Unsfm=sfm; / g$ f s2 T1 ?/ p" T- A1 k0 l& q3 p
for i=1:length(t)-1 %接受信号通过微分器处理1 F0 V" z1 ~. G( d1 S( u, X/ B
diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;3 G8 L+ t6 ~ y6 I
end
& r/ e: x7 |& s( Ndiff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
0 Y. M: A) G+ i7 t; {+ o" @zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;9 \ ?0 i8 Q0 r" J0 d9 W
diff_nsfmn1=diff_nsfmn-zero;' R! g+ j" {2 Y$ B* U! G# Q# }3 T
subplot(3,1,3); %绘制无噪声条件下解调信号的时域图
$ G& o f: y$ E8 }5 q7 ^" hplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');) u5 W# a+ H% J. S5 q- B
xlabel('时间t');
& G3 S4 L5 m# o) U1 O, D' P* Ftitle('无噪声条件下解调信号的时域图');
2 E" E. |/ M4 _%*****************************************3 {7 I. b; N+ ?2 Y" y
disp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
2 y& g1 h. t% o( Rpause
$ L( `; L, L" u! \* F( G%**************figure(4)******************
+ E7 @: Z+ F; \, H. Hfigure(4)3 z& t6 i. e9 H. M: B2 t
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图7 \) z1 x- a7 K% u. ]0 Y! j
xlabel('时间t');
% A# B. a. ~8 f+ @4 t& ytitle('调制信号的时域图');
) k1 k- d+ L/ E/ ]' E% c( p5 u" Tdb1=am^2/(2*(10^(sn1/10))); %计算对应的小信噪比高斯白躁声的方差
3 }+ j) A5 i9 ~% Vn1=sqrt(db1)*randn(size(t)); %生成高斯白躁声% m' [' o- i. q5 v
nsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通, O7 p W! p% g$ a
% %过信道传输)
5 T& }( a W; i K4 E- Ifor i=1:length(t)-1 %接受信号通过微分器处理
R0 Z# @- F- M" C2 n5 @& `. ?8 G diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
! I7 f& E' \5 g. y/ Z5 n9 Q) Qend. P7 w; i6 R0 w% N0 c
diff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
6 K" d. d# `. L7 I4 p6 y( H, pzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
; W* O } I; k2 b5 h3 wdiff_nsfmn1=diff_nsfmn1-zero;
% a" i: L( Z8 \2 o1 K1 Ysubplot(3,1,2);
" f2 ?8 m' p1 k3 G# tplot(1:length(diff_nsfm),diff_nsfm); %绘制含小信噪比高斯白噪声已调信号的时域图
1 e% T0 _3 c2 I- s$ ~* Cxlabel('时间t');: [* B* U3 d2 e% E
title('含小信噪比高斯白噪声已调信号的时域图');& A3 b* h0 o$ f) M0 C# D! V' m' W- i& D
subplot(3,1,3); %绘制含小信噪比高斯白噪声解调信号的时域图: j3 I' P. G2 f2 a x, c5 d
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');# D. A$ C: v" a9 Q$ R
xlabel('时间t');
% A1 w: j3 F; u5 Rtitle('含小信噪比高斯白噪声解调信号的时域图');1 B- c3 e- c0 F+ V5 U7 [% m
%*****************************************
5 g" x4 f W1 J$ b; xdisp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')1 z3 j8 [) B8 c
pause0 V* B6 |$ Z* P& p) |: Y! m
%**************figure(5)******************3 B* Q A# A1 V
figure(5)
8 _3 H: o# V, [, | J( H* I& Dsubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
" ~3 _, m/ ~. C+ Q8 K8 {8 ~; T' s1 X5 _xlabel('时间t');
0 S" Q0 M) \8 a) S/ I8 B* Ktitle('调制信号的时域图');
7 ~5 `/ q O' a# }- odb1=am^2/(2*(10^(sn2/10))); %计算对应的大信噪比高斯白躁声的方差
1 N/ j% D0 X$ v, l, en1=sqrt(db1)*randn(size(t)); %生成高斯白躁声
7 R1 `8 o* d1 t& o* j0 a+ Gnsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通过信道传输)
' \4 A8 @. f, Y+ x- \for i=1:length(t)-1 %接受信号通过微分器处理 }, a0 ^' f. s3 s7 f
diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;. ~. \" {+ }9 X3 w# o1 U
end: F* c" e+ x& Y) `% U
diff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包
: ~, q7 s& M/ T: }- K1 j8 d% %络检波)- m# A% p% `# `' O
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
( h. B6 O3 N, b) \. [- e, Ddiff_nsfmn1=diff_nsfmn1-zero;; |" F5 U, i% a
subplot(3,1,2);! C- ?# P# e( b4 C$ `
plot(1:length(diff_nsfm1),diff_nsfm1); %绘制含大信噪比高斯白噪声已调信号
3 T& N- q% z' I) S2 W% %的时域图
; i4 @) S5 R: T! Uxlabel('时间t');+ Y2 A# f6 p: G8 ^: m' f4 w
title('含大信噪比高斯白噪声已调信号的时域图');
6 L5 q0 Z- C, a6 u6 Q8 lsubplot(3,1,3); %绘制含大信噪比高斯白噪声解调信号
. M$ C. ~0 o `- J: `/ v2 K% %的时域图
0 r3 d- d7 |7 H$ V8 F" K9 t! Kplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
' W6 e6 K; c* y% o8 T- jxlabel('时间t');
5 k' K. `2 G$ ]title('含大信噪比高斯白噪声解调信号的时域图');7 }9 r, F& r5 Z4 _% h+ f2 X, f. ~
%*****************************************
, d2 I9 A/ _3 e% H%******************结 束*******************
- S7 S4 N# l7 q8 r# C8 A2 h1 @+ [; y0 O* ~0 y
+ M$ t c; E: t3 c( M- S5 I* V |
zan
|