- 在线时间
- 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' ^1 F0 t" x* M2 p+ U
%频率调制与解调的Matlab演示源程序% s! b+ a2 d4 s [( }- I& l
%可以任意改原调制信号函数m(t)
4 U& h" ?: b9 ]8 L) Z$ {%电子信息工程 杜怀超 091308305
# {! j4 N8 H, q1 E. s" u4 b%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
2 K2 B1 o2 g9 {6 X! j4 H, K%*****************初始化******************/ m8 k" c" x. n7 }$ f0 X% T
echo off
" a4 x, B0 B! `' W3 F( jclose all T0 E# v% P! U& X9 ~5 I
clear all
( o" L/ i% ?; `+ M( M, [clc& l& }) p% d6 N/ p6 w
%*****************************************% D+ F4 G, @+ N
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·7 m' ^5 V. C* \2 `% x
%****************FM调制******************* q4 P8 P; [3 U8 I" C- Z. p/ Z3 v
dt=0.001; %设定时间步长
2 y; A2 Q1 L) d! o1 E8 Lt=0:dt:1.5; %产生时间向量1 O9 w0 ^8 y$ p6 L- J
am=5; %设定调制信号幅度
- `4 G4 M8 p0 j" Nfm=5; %设定调制信号频率; q6 X% v g' y9 y H4 A
mt=am*cos(2*pi*fm*t); %生成调制信号
5 C6 N' e- M* Jfc=50; %设定载波频率. t* }8 I2 L4 h+ i
ct=cos(2*pi*fc*t); %生成载波 w0 i& L/ K4 J' J P; ~& y
kf=10; %设定调频指数1 M) X9 e8 H# _- [
int_mt(1)=0;
$ w5 Y( |: M+ a5 o2 Y, ?& @: nfor i=1:length(t)-1 " c+ I/ c# i4 D" W- i
int_mt(i+1)=int_mt(i)+mt(i)*dt; %求信号m(t)的积分
% I# B1 K4 a+ E. mend %调制,产生已调信号
) s; Q6 l- o; Y8 D5 s$ o4 ~* Wsfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt); %调制信号$ H; |6 D% I) J0 C$ P3 E
%*****************************************1 o7 p" _# i) ~( y( \& X0 b& g
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·+ x& [& ~( \( s' s
%*************添加高斯白噪声**************
( r& m* b- ]& V' dsn1=10; %设定信躁比(小信噪比); F' d: U* ?( d. ~' _$ Y$ M
sn2=30; %设定信躁比(大信噪比)
Q6 s9 ]! e) O, Z4 Esn=0; %设定信躁比(无信噪比)* O% z" J) ~" g4 L* v: p: x
db=am^2/(2*(10^(sn/10))); %计算对应的高斯白躁声的方差* J5 A2 N' a1 X1 }5 H' h" j; U- j; \. V
n=sqrt(db)*randn(size(t)); %生成高斯白躁声
1 d3 P) q+ U2 {. }5 ~$ @nsfm=n+sfm; %生成含高斯白躁声的已调信号(信号通
U; N( z. u8 j9 ~0 p%过信道传输)% |( \$ {5 q! V
%*****************************************8 W$ \6 F5 a5 ?# a
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·6 s+ J v. l2 n
%****************FM解调*******************& F2 q$ y/ \- _- D; p0 e
for i=1:length(t)-1 %接受信号通过微分器处理
% q: X7 X4 i3 ], ] diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
/ h+ F- C* k! u4 C4 o. Cend
# @7 K0 Z0 B: {4 {9 }# Z! }$ t- c, Udiff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
' p2 F1 O& q' O- q2 b" k azero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
, i! G1 M- H5 M$ P$ c& L* Qdiff_nsfmn1=diff_nsfmn-zero;
) M+ p; r% j+ U$ `5 _# P%*****************************************1 i$ p, N& V3 U8 E7 Y I
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
% M8 C0 U; I' R9 `3 `%**************时域到频域转换**************% u1 N: u1 p3 l. M
ts=0.001; %抽样间隔
/ O; D" |8 s+ j+ n2 H, ufs=1/ts; %抽样频率% K" }! T0 O8 v! w2 |8 |- m8 z8 d
df=0.25; %所需的频率分辨率,用在求傅里叶变换. I$ \1 {) d: W4 h. b" \4 g0 Q4 J/ u
% 时,它表示FFT的最小频率间隔* ]$ O& i5 R3 V3 `, N- Y3 t- r( p
%*****对调制信号m(t)求傅里叶变换*****4 e( W7 |9 g5 L2 L7 ~1 J+ g1 o
m=am*cos(2*pi*fm*t); %原调信号- G: g3 B1 g6 }$ r% \
fs=1/ts;7 b C6 x3 l% m* @( Y
if nargin==20 y* Y3 U1 u& d; M* m) j
n1=0;
5 r, S0 |" `9 I! r7 q5 g( l4 F$ f) Jelse, e+ X0 r8 M2 @
n1=fs/df;
4 m7 ]% _' ~) V2 L' n( J( ?end8 _* P0 k8 ]5 |8 o( U
n2=length(m);6 S& H: Q( ]1 N. K- V; u& E) B
n=2^(max(nextpow2(n1),nextpow2(n2)));% C# Q! Z0 `0 M
M=fft(m,n);, a- S& f0 u( a# U, j) \) }3 ^
m=[m,zeros(1,n-n2)];
- Z9 }7 ]9 N& m% D% m1 Cdf1=fs/n; %以上程序是对调制后的信号u求傅里变换
+ `% }+ b- q3 GM=M/fs; %缩放,便于在频铺图上整体观察
5 r+ `1 [0 `0 r `- Rf=[0:df1:df1*(length(m)-1)]-fs/2; %时间向量对应的频率向量
: M( Q8 g; S) ~6 L0 g
1 h( B; y4 T* M3 n( s6 {%************对已调信号u求傅里变换**********$ Y% A3 j' k" c
fs=1/ts;( [9 i" x( ?5 Y& D. K; z/ u
if nargin==2+ i9 h" @( b: M& b
n1=0;
+ F" S' ^" V! S$ u+ o4 y9 Q1 yelse9 y! G7 A/ L( y) G3 w& u
n1=fs/df;. j+ g, t; x' N) l8 |/ H0 H
end I8 ?9 P1 W' s' A+ _9 }* Z
n2=length(sfm);# | V9 }- t, Q) t
n=2^(max(nextpow2(n1),nextpow2(n2)));
( y- V9 f) o P& PU=fft(sfm,n);
* s9 a2 o4 _5 a8 k- @! u# Fu=[sfm,zeros(1,n-n2)];
/ g; ^ n. Z8 C* k" fdf1=fs/n; %以上是对已调信号u求傅里变换1 t8 ~# N3 h$ E
U=U/fs; %缩放
* Q& ]4 t3 K% m2 M4 b0 [%******************************************: s& C1 G0 K3 E5 ~' Y! n
%*****************************************, P# C* |, ]1 m2 [* f; R1 D4 [
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·) L) C7 {9 O7 i4 p/ k
%***************显示程序******************
0 u/ l) ^/ V0 U2 F$ q1 Bdisp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')
6 v0 _8 U: _4 d1 x7 x$ ypause
U' ]8 ]# `) z6 b%**************figure(1)******************
+ D; J3 w+ z, \6 w" Hfigure(1)0 T3 E4 A! U2 a! D
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
/ s' {/ f& V/ `/ K8 oxlabel('时间t');7 b5 |3 N2 b' k
title('调制信号的时域图');& E- G" i" l, ]& Y# v* M |
subplot(3,1,2);plot(t,ct); %绘制载波的时域图! Q) q% x7 ?9 N3 `3 L2 e, ]
xlabel('时间t');
' t. A' v4 A* x3 G' `" |" Vtitle('载波的时域图');
w2 N0 X. ?, a" t S# T1 ^subplot(3,1,3);: b. U- O, L% u6 |5 }3 {& A
plot(t,sfm); %绘制已调信号的时域图! t6 g6 E- y% D# n7 A5 u3 E& t+ s+ N
xlabel('时间t');
* m+ A5 e) ?: `; S4 j1 Otitle('已调信号的时域图');
9 K) T$ E2 b9 @4 R' d2 I%****************************************** t! h' q% L# d* N/ `1 Y# g
disp('按任意键可以看到原调制信号和已调信号在频域内的图形') n; Q, S3 k# N" n/ e
pause/ ^! d ] f: }
%************figure(2)*********************
p; _3 j6 q- [0 X, H: Zfigure(2)" t) E0 |# a4 z" s# D7 G& _& ~
subplot(2,1,1)! S3 y5 E. _! v0 B
plot(f,abs(fftshift(M))) %fftshift:将FFT中的DC分量移到频谱中心
8 W+ N& P( |% L8 y2 W$ }xlabel('频率f')
' M c1 _& a- b% btitle('原调制信号的频谱图')
+ [% L# i- }' |4 i c& osubplot(2,1,2)
2 L2 k1 k3 u+ j9 ]0 g$ e# S2 Gplot(f,abs(fftshift(U))), F4 L$ F( V: T- ^" @8 _
xlabel('频率f')
2 J7 p8 u8 W6 u D1 Ititle('已调信号的频谱图')
7 G& {3 Z0 Z$ A# P5 t* F6 [%******************************************
& H/ R. Y2 w" ^* D" q, C( R0 Wdisp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')" J2 s2 G9 {1 Z$ d
pause* I7 \6 p5 W' Y) y! x9 a W
%**************figure(3)******************
& L' Y, `# b) K" {' Ifigure(3)
. a$ H2 x2 D3 z5 l2 n$ ^8 o. Q6 x; Z% qsubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
+ \- Z7 ` y4 \, L5 H; j2 Sxlabel('时间t');, g# C9 ? h' l6 E& G
title('调制信号的时域图');
6 p7 m0 D! ]" G" J) ?subplot(3,1,2);plot(t,sfm); %绘制已调信号的时域图4 g( _; l! Q2 q$ ]/ N
xlabel('时间t');
6 l) ]( O! x; e! j: Mtitle('无噪声条件下已调信号的时域图');
' K; s' q: A3 _8 v4 }: Mnsfm=sfm;
q2 o( _7 d% zfor i=1:length(t)-1 %接受信号通过微分器处理$ l# N) u- c8 ?2 |/ L' f4 A: ~
diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;, S3 E' z- x4 U1 A
end( I! v( V0 C2 h& K& P6 L
diff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)9 q& s; C4 g; {0 D4 M# d( g' Z+ L5 r/ o
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
9 C( C$ m7 F1 A2 U( X' c Ediff_nsfmn1=diff_nsfmn-zero;
2 c7 ?( T9 J& G9 v: \0 i% w. ssubplot(3,1,3); %绘制无噪声条件下解调信号的时域图
/ n: Q; u: `) V. ~- U0 ?* Bplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
$ B6 L9 |/ d5 `xlabel('时间t');
$ U2 d9 @8 z$ h. S+ D1 }0 I3 W& ctitle('无噪声条件下解调信号的时域图');
& K5 S* E3 b6 y( A%*****************************************
3 U, [# Q- q' r5 ydisp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')2 O7 ~6 E! |: |& E' g2 e% W
pause3 p" [7 O5 L: z7 |+ k* b
%**************figure(4)******************' o) f9 S6 Z9 j& p% p; ?
figure(4)
! E) [ e: l/ Q; asubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图- g( ]6 [. P+ F; f! Y! ~' a3 Q# x$ R
xlabel('时间t');8 z" s+ l7 P* Z) Y" V" k
title('调制信号的时域图');
. i; R; Q6 E* cdb1=am^2/(2*(10^(sn1/10))); %计算对应的小信噪比高斯白躁声的方差$ z: U! \2 g3 @8 S2 q5 D- ]
n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声
5 S* y# c$ F0 m) tnsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通5 ^8 E' N2 c$ M+ z$ |' o
% %过信道传输)+ G3 t/ o- s7 o5 D$ j4 k8 Y% u: J
for i=1:length(t)-1 %接受信号通过微分器处理
. t: J( K& D( f) J: p diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;3 u# ]1 P) L2 U/ [" F
end+ |. \; c0 a& z' z$ U& j$ h( ~
diff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)/ Z) ~! c. X! O* A- v- i! m
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;- @8 b+ L' L- X9 e7 }0 [
diff_nsfmn1=diff_nsfmn1-zero;* e! c$ v4 W5 m0 p
subplot(3,1,2);
5 S6 N! I; @5 g* N( L+ b" J4 c7 Uplot(1:length(diff_nsfm),diff_nsfm); %绘制含小信噪比高斯白噪声已调信号的时域图
1 K4 p- ~5 ]& Zxlabel('时间t');
" I) }1 h. Y M1 [title('含小信噪比高斯白噪声已调信号的时域图');/ u* n( O2 o$ ]6 J
subplot(3,1,3); %绘制含小信噪比高斯白噪声解调信号的时域图! a9 I/ g4 C$ h
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');: c* X- o$ \5 U |
xlabel('时间t');
# a+ ?6 [6 a I3 Ititle('含小信噪比高斯白噪声解调信号的时域图');
j8 j% A. [- k3 ~2 x0 H) g%*****************************************$ {: a' j* l4 U) E
disp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')' i L) @! C w( ]5 y+ ?9 h
pause% m3 ?, A; E1 u
%**************figure(5)******************
; \& \: ]' P0 I6 c; y/ p! H. w; ~figure(5)4 _: n* }6 t- }* G+ d! e4 u. x0 z, h
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
7 D8 H2 U+ A+ l5 ]5 exlabel('时间t');6 V' c/ w! B- p4 `4 |0 _
title('调制信号的时域图');
& }# Y, B7 i" d0 }db1=am^2/(2*(10^(sn2/10))); %计算对应的大信噪比高斯白躁声的方差- }/ n; d& N' u7 s& s) t
n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声0 ]$ k$ t0 Z9 Y7 n* k0 P' s3 Y
nsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通过信道传输)/ e! S l4 ^6 Q' z* g/ H* w# [
for i=1:length(t)-1 %接受信号通过微分器处理) N* m* S* P% _6 w& Z. q$ ]) E
diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
3 o) T" l7 z& S* ^, o3 m9 V5 Tend. l5 S$ l% w5 b- o3 d& o- g
diff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包% P N) ]) {- i' D- Z
% %络检波)/ J* A6 e( _6 z2 R Y3 \5 S. V
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;2 s% l( H' A3 ] |! X
diff_nsfmn1=diff_nsfmn1-zero;
5 ^) P4 r) i- }0 j' i* Q. hsubplot(3,1,2);
2 s+ `' g* ^: _1 b; v9 U- uplot(1:length(diff_nsfm1),diff_nsfm1); %绘制含大信噪比高斯白噪声已调信号
/ S5 g7 f. a' s& D% J z3 m5 ~% %的时域图" x9 d9 J) \% E. w
xlabel('时间t');
3 {& h5 Q7 b) J1 @. Etitle('含大信噪比高斯白噪声已调信号的时域图');
: M. _1 P/ i7 h% d7 M; A8 }* `: }) Z- r8 Hsubplot(3,1,3); %绘制含大信噪比高斯白噪声解调信号
% W( q7 e3 p! C3 f4 `! [2 O% %的时域图4 l1 B& r1 s C9 \) H4 s5 P" z6 E
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');4 T7 Z" @9 w4 [* l/ E
xlabel('时间t'); " }- n4 G8 n0 S, W4 ?
title('含大信噪比高斯白噪声解调信号的时域图');' S ~/ i& `. I$ @
%*****************************************" O3 ?0 `1 l+ B4 R! T; l2 C& ]
%******************结 束*******************( |0 u* ?, G" M5 x2 Z( [
( C X e* m' B8 W) u* [
% k3 @5 U0 A/ g0 j, N+ V$ `& H
|
zan
|