- 在线时间
- 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
5 j# X% t- ~% ?) v%频率调制与解调的Matlab演示源程序0 k, {8 p9 D7 T6 t3 @4 w
%可以任意改原调制信号函数m(t)
6 E) |7 ^$ ~' D% Y$ @. R%电子信息工程 杜怀超 091308305
* ^% ?! @ X' \/ _( C" o%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·* Y$ }0 u% r7 k0 f% M$ N' V
%*****************初始化******************' j7 ~' J9 u, z3 S/ ^1 r
echo off 3 S0 o6 _6 Q4 O9 V8 B6 [
close all
3 v+ Y5 T9 K/ ~' B# z3 u4 M9 eclear all
! q7 \: M. r1 o( V- W; `clc7 m" c7 r& w% x8 K) k; d
%*****************************************
4 H) \) n. E# k1 x9 H- G%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·0 j1 p: g/ b2 s0 q3 K4 l# O* I( b! v7 }
%****************FM调制*******************) }) i. {) h3 l" q, t: g
dt=0.001; %设定时间步长+ @+ P7 p# `# l
t=0:dt:1.5; %产生时间向量7 H7 m) F4 o3 Q- g
am=5; %设定调制信号幅度3 s: H2 Q% K9 B3 ]# e y
fm=5; %设定调制信号频率
1 D. q6 d( u0 a, t; V, \* T3 dmt=am*cos(2*pi*fm*t); %生成调制信号: @- r3 Z% J! Z( e
fc=50; %设定载波频率
6 q; p+ Q: G" b5 ~7 r3 i1 |5 E4 pct=cos(2*pi*fc*t); %生成载波
. ?9 s& U9 u, J* i7 g4 `; @kf=10; %设定调频指数
, E; d$ D `: H: S' l8 ~' Uint_mt(1)=0;5 {! t! R. }7 i$ K4 O! s% }. w6 B
for i=1:length(t)-1 # N; X6 R: ]! U4 r. L1 D0 G
int_mt(i+1)=int_mt(i)+mt(i)*dt; %求信号m(t)的积分! P) ?5 z' x% W `! W5 v
end %调制,产生已调信号
5 ~* u& E# |" _. Nsfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt); %调制信号7 D$ o0 E8 C7 x2 S4 h
%*****************************************3 _2 n# u8 |! G( p4 e+ x% d! @* Y' f
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·4 v' F2 D6 ?( u6 |, t' A+ c
%*************添加高斯白噪声**************
7 e% ?3 Q% r* W8 F' v$ I& Rsn1=10; %设定信躁比(小信噪比)
$ m- }1 i# e4 q. p$ \sn2=30; %设定信躁比(大信噪比)2 |2 P; G7 x' F) n9 P! T; U( m
sn=0; %设定信躁比(无信噪比)- P3 C+ c( D8 C
db=am^2/(2*(10^(sn/10))); %计算对应的高斯白躁声的方差
2 d6 `/ Q7 J* U9 w7 f$ \n=sqrt(db)*randn(size(t)); %生成高斯白躁声" B+ s4 B0 M* \( y
nsfm=n+sfm; %生成含高斯白躁声的已调信号(信号通4 V+ A3 H/ p9 t! t+ `
%过信道传输)2 O3 s$ m4 ` M% S6 K ^* q
%*****************************************
* d5 D8 K! K) p% Q2 `%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·5 O. }9 N+ F. z( { a- K
%****************FM解调******************** g- E v/ m, b# ^
for i=1:length(t)-1 %接受信号通过微分器处理4 W- @$ z8 P7 R5 e
diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
, @8 W- o$ d4 ^8 l$ J! K0 `+ K4 fend
$ N0 r% Q' F h9 H u' d, Ediff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
# \5 |) V0 {1 U" ezero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
& T5 X6 o% d7 w1 L+ Fdiff_nsfmn1=diff_nsfmn-zero;
; b: l7 F+ N7 Y4 j%*****************************************9 X# L: F5 i( E: H5 h1 D
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
; {9 D/ M8 a+ W+ @' r: _2 Y%**************时域到频域转换**************; M: X" |6 H' r: o% r" z- R# m
ts=0.001; %抽样间隔
# ~' q6 j+ q& B* z; F6 }- {fs=1/ts; %抽样频率
+ ^ x" `% a5 P$ cdf=0.25; %所需的频率分辨率,用在求傅里叶变换
2 T4 J! ~( L; e0 x9 C& Q% 时,它表示FFT的最小频率间隔
9 S% I" {5 j) t3 `: f%*****对调制信号m(t)求傅里叶变换*****$ R; C5 [1 ^: z0 w u
m=am*cos(2*pi*fm*t); %原调信号
; Q. [5 N# B/ R2 w# u+ c* c, `fs=1/ts;% b( ?; r% p Z! H. t: ]* \3 @
if nargin==2) m* F; u" E8 T2 A2 G- [$ [
n1=0;
! ~ D+ S$ X/ B0 gelse
* T( z3 I8 W. E6 c! O n1=fs/df; y9 x9 t+ ~" X. A* C' v8 ^3 K4 L
end F4 V7 ~% {7 b! ?
n2=length(m);
3 U/ A& x9 {( r3 X9 P8 in=2^(max(nextpow2(n1),nextpow2(n2)));& M p/ `5 q# v0 [( G3 |
M=fft(m,n);' e: z* e* o/ h7 o+ @! T
m=[m,zeros(1,n-n2)];
. p4 n* F% y5 T. Wdf1=fs/n; %以上程序是对调制后的信号u求傅里变换1 H- q9 s+ U/ _7 h( T
M=M/fs; %缩放,便于在频铺图上整体观察% G! N5 ^5 h# {! C6 I
f=[0:df1:df1*(length(m)-1)]-fs/2; %时间向量对应的频率向量
. R- x+ z4 R3 O+ @: A1 e
0 M; ]0 y6 V# q$ x) z%************对已调信号u求傅里变换**********
3 k7 o; v( w' efs=1/ts;
- m! l# I; G6 H# ] Bif nargin==2
9 ] S1 N/ b( u' W- Z# A n1=0;
1 c# @) B, _: z/ ?/ Helse4 E/ v1 d2 C, r/ \' y2 w/ g
n1=fs/df;
" U& u$ X. ?. T; b7 xend7 f, f# F) S( Q5 {3 o) j
n2=length(sfm);
. [" \0 @$ h$ z/ pn=2^(max(nextpow2(n1),nextpow2(n2)));
+ u3 `: a5 G3 ?U=fft(sfm,n);1 J* g+ t* i4 ^0 ], ~ T- o
u=[sfm,zeros(1,n-n2)];/ Q( ^, t9 h* B2 V/ R4 q7 r# A7 h
df1=fs/n; %以上是对已调信号u求傅里变换
3 z: Z- A: Z# B7 OU=U/fs; %缩放9 w; l) b" ~- {# o+ y: F( q
%******************************************2 E1 e5 U# i3 w0 o. ~
%*****************************************
' C2 S% Q+ r6 @) K2 D( z%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·# f1 T; W# G" `) x% M
%***************显示程序******************, j7 b" d: `2 X4 D) E
disp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')/ ?: `7 \' k) d9 R8 Y9 `, v2 T
pause
. m! T" o0 r" O) ?%**************figure(1)******************8 H& o- N, ^* }
figure(1)0 c" Z8 ^1 U/ z, y( q, P' ?
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图: E9 @8 G8 b6 }1 j( C6 g
xlabel('时间t');, t1 U5 I- a; ]
title('调制信号的时域图');2 X1 C% _6 d, p- S& R `" [) |* ~
subplot(3,1,2);plot(t,ct); %绘制载波的时域图+ z$ d5 g) [6 r
xlabel('时间t');$ _. S% a3 ^2 U' O: T7 a0 M0 c
title('载波的时域图');6 y" S% V6 I8 O- j- x( _. R
subplot(3,1,3);' x0 \! f) [% q' y" G8 \, `. t
plot(t,sfm); %绘制已调信号的时域图
+ g+ R7 Q( b/ E" axlabel('时间t'); W; E3 t$ w7 |2 Q. G5 s
title('已调信号的时域图');, Z, N+ S$ ^: M
%******************************************
1 v5 U6 }, S& j$ x; D( Ddisp('按任意键可以看到原调制信号和已调信号在频域内的图形')
7 ?& C" b3 }9 u; x' H( [pause0 Y) A+ U( u" J7 ]
%************figure(2)*********************
* Y, ? _, W' |! Y% Y: M) y" Rfigure(2)# P+ E, S! Y- j; A5 v z
subplot(2,1,1)
- R b' e* Y* _' F1 Y, b2 Fplot(f,abs(fftshift(M))) %fftshift:将FFT中的DC分量移到频谱中心
5 u! \( K* m3 `3 P- qxlabel('频率f')
5 X) C3 u/ s7 i4 R* Ptitle('原调制信号的频谱图')
0 U" |, _% r3 C+ wsubplot(2,1,2)
6 R1 r4 a8 ]6 G) i7 q/ Jplot(f,abs(fftshift(U)))
6 ?% r; w! m" Ixlabel('频率f')
' T3 ~9 ?, i3 e& Y' utitle('已调信号的频谱图')% f$ `5 ]7 F, A: v, ^
%******************************************
+ t5 m( h, K8 |# {disp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')$ V8 ^0 W# N k) V
pause0 d) Y* T9 U% `9 f9 i
%**************figure(3)******************
9 j. I/ ^% a, A* b! mfigure(3)
1 ~2 a: F7 m5 n; R0 i8 J$ g3 o7 h2 Ksubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
( t5 X+ {+ B1 _9 |+ Fxlabel('时间t');
" e1 M; h0 H' i2 Z( G' ytitle('调制信号的时域图');
/ K7 \# L# D, O" _ X; e6 |3 n& esubplot(3,1,2);plot(t,sfm); %绘制已调信号的时域图
% v* q8 k' J4 i* E6 oxlabel('时间t');
+ |) u* n' L4 c8 @* ^* dtitle('无噪声条件下已调信号的时域图');: A# a; e0 N9 M9 [. i/ d
nsfm=sfm; 7 _, d0 A9 b3 U! J7 k5 A
for i=1:length(t)-1 %接受信号通过微分器处理
3 g* }$ f6 n; [0 X diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
9 C6 A8 d. y6 v7 R1 M% gend
% D6 V; z7 s) Z5 J8 {+ ~$ D3 V( _diff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
0 V& U6 p1 l8 o5 @* i! gzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;1 N+ A; ~% h! r3 M' a
diff_nsfmn1=diff_nsfmn-zero;6 N6 Z& R* m% W `' R5 x
subplot(3,1,3); %绘制无噪声条件下解调信号的时域图) h; u, X- F) O$ x' G
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');! @7 S. d* ~% s; z8 t4 X1 |$ B4 R
xlabel('时间t');
( H; t5 k( O4 i0 `( H6 @9 Ititle('无噪声条件下解调信号的时域图');
; X Y$ V6 a/ N Z" t9 P+ s2 m%*****************************************
; y& g l# N5 V. Zdisp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')) w' `. }0 @. _- L5 x- q
pause/ l/ v* }$ w& P3 \" M- `
%**************figure(4)******************$ ~4 @# r8 [% Z& G( \+ _: ?
figure(4)
) Q6 f6 v4 F6 D; e$ ~4 Csubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图1 k9 m2 L7 B5 D1 B
xlabel('时间t');4 o% h7 h; r! K2 o
title('调制信号的时域图');- G' k9 W) `" H$ o
db1=am^2/(2*(10^(sn1/10))); %计算对应的小信噪比高斯白躁声的方差; w; O+ e# R [( ~/ m
n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声8 J. f2 }3 g- a$ b
nsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通7 P5 B6 j' y/ }$ |) z1 `
% %过信道传输)" e# n. E1 ^( O2 K* _; A
for i=1:length(t)-1 %接受信号通过微分器处理3 X; p( f, ]& X1 R
diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
1 f& F. S) H1 U# Y$ |end/ I- G8 u# [4 ?1 [+ S
diff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包络检波), m4 a( U; r( n' Y* h& o
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;9 {7 R8 Q9 Q) q9 L3 f/ Y& a' e/ Q
diff_nsfmn1=diff_nsfmn1-zero;2 |* W& q0 n6 b: s. e/ l. U
subplot(3,1,2);
2 U) V3 J: y, D& x' Eplot(1:length(diff_nsfm),diff_nsfm); %绘制含小信噪比高斯白噪声已调信号的时域图) n5 T. \6 V( y! b; }- N9 F) r
xlabel('时间t');5 P; m* G, v) F8 Q7 |, t. h1 s
title('含小信噪比高斯白噪声已调信号的时域图');
0 S& ]) n% x; B) Q# W V( T' msubplot(3,1,3); %绘制含小信噪比高斯白噪声解调信号的时域图
/ R8 i$ H5 d! A% jplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
/ p) O% ^1 s) xxlabel('时间t'); + Y, p2 y/ O0 {
title('含小信噪比高斯白噪声解调信号的时域图');! m1 @0 `& R9 H+ |1 C
%*****************************************
0 ?! R" t# ]! B$ X/ C# r# K; ]disp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')$ c: }% f- L W; r# q1 Y
pause
# |/ N% A' Z- ?0 L%**************figure(5)******************* j: d7 N; V' F( M3 G. a6 E
figure(5). p8 \5 ^+ y9 f+ p6 o
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图+ @ l: w4 ~. h- C
xlabel('时间t');3 Z6 b, I6 r) `; B( s2 b
title('调制信号的时域图');( `/ _7 F' w1 _1 _# j
db1=am^2/(2*(10^(sn2/10))); %计算对应的大信噪比高斯白躁声的方差
1 R9 m5 K/ a5 hn1=sqrt(db1)*randn(size(t)); %生成高斯白躁声4 K, i4 \) r E+ s4 }1 G# ?" ?
nsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通过信道传输)3 J- P F: n. n6 ?; C
for i=1:length(t)-1 %接受信号通过微分器处理
' i" r8 F: D/ x# L9 d+ k$ E diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
- D, J. u+ E/ d1 N9 S# D: kend, v; l6 V! W# ]) h$ Y$ s$ I
diff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包
1 V1 A0 j x5 o3 J& R M! ]% %络检波). q0 W g, B3 [- W, o# v
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;4 j8 A% z0 q! z2 ~
diff_nsfmn1=diff_nsfmn1-zero;
4 v# e4 v. L: s" h( S; _( Tsubplot(3,1,2);3 Q" A3 j z" V" X8 B
plot(1:length(diff_nsfm1),diff_nsfm1); %绘制含大信噪比高斯白噪声已调信号$ E( }" F1 c' @% S$ n2 N& w! U
% %的时域图. a/ M0 M* x; L8 d# C( b
xlabel('时间t');
" _, u y7 E; Wtitle('含大信噪比高斯白噪声已调信号的时域图');
- P# f6 R4 A* P/ v) ksubplot(3,1,3); %绘制含大信噪比高斯白噪声解调信号
w1 |' D) I+ n% v( T3 C% %的时域图
" g i/ J. B* cplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r'); _9 ~$ t1 A, U
xlabel('时间t'); + [" ]3 p5 O" E6 R! ~ v7 H
title('含大信噪比高斯白噪声解调信号的时域图');
! K9 a* D2 h- i%*****************************************
5 z/ H% s/ b( M3 w. Z( l y( d%******************结 束*******************( z7 n; i; a+ p
7 x t2 F, O" Q: C: w# z
) F7 }( O" n5 @' E* b0 Q* }1 I2 k |
zan
|