- 在线时间
- 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
/ G3 b% A- b* a; T7 P# c! h6 s%频率调制与解调的Matlab演示源程序
& c# j% i; c) q/ @%可以任意改原调制信号函数m(t)
4 s" ]' [ _7 g6 ~+ S%电子信息工程 杜怀超 091308305
0 M8 b3 d& q, |0 ` r8 z) J4 y%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
, r1 e5 m6 o* l7 L# s$ o%*****************初始化******************
( ?* |. \, Z1 Fecho off
% w2 p$ ?5 s* }close all
0 F2 w1 Q' @$ F5 I# W8 @clear all
5 {6 l' |/ R* ?* `clc1 G5 [* W0 ]6 J+ p
%*****************************************- n2 {$ ^' H- J
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·3 G0 h& T" d- B7 _
%****************FM调制*******************- `; S$ V: K" G4 h6 ]
dt=0.001; %设定时间步长& |) H/ o. H1 j4 K
t=0:dt:1.5; %产生时间向量
9 U. X& C9 h; h4 Z7 M7 Qam=5; %设定调制信号幅度
8 j6 M8 x% k" o* u3 {/ Tfm=5; %设定调制信号频率
5 \# L% V0 `; Z- ~2 Ymt=am*cos(2*pi*fm*t); %生成调制信号
1 e$ a* }# k* s8 j7 T2 [( Sfc=50; %设定载波频率
' J V7 \$ ~ V! G6 d1 U3 }ct=cos(2*pi*fc*t); %生成载波) L- w5 G3 L) F; D( e8 B" V# }
kf=10; %设定调频指数5 s5 q$ O) `; J! }( k8 X
int_mt(1)=0;: n- W/ Y8 D3 Z4 G! ^7 a, f% l
for i=1:length(t)-1 b. T( E# S3 a8 {$ M+ u
int_mt(i+1)=int_mt(i)+mt(i)*dt; %求信号m(t)的积分4 R, N5 J) x6 r; n$ |- k0 g. Z
end %调制,产生已调信号$ k- G. S. t- y. [$ r
sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt); %调制信号
7 d5 ^- I2 O7 F4 w6 N! V%*****************************************
& ?3 H9 k* a: D( j$ u4 l' @%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·8 A: j( ?) b5 H5 {2 Y. i
%*************添加高斯白噪声**************2 `! N0 b1 p# U8 \6 i5 T* p
sn1=10; %设定信躁比(小信噪比); y0 w8 [9 u; z' M$ q3 {5 x* q
sn2=30; %设定信躁比(大信噪比)
5 r0 d9 z$ K6 ~% w% d- \, O% @sn=0; %设定信躁比(无信噪比)
% r( q' h5 p; O2 u9 i2 P, Qdb=am^2/(2*(10^(sn/10))); %计算对应的高斯白躁声的方差1 t: @" W, Y# K3 g+ h+ ?% w4 K9 R; e
n=sqrt(db)*randn(size(t)); %生成高斯白躁声 h3 _! d7 z4 j% Z8 T3 B+ N! H0 M
nsfm=n+sfm; %生成含高斯白躁声的已调信号(信号通
, V s) G3 u0 o/ H4 m; x%过信道传输)* a5 x! V$ V& G: E4 \
%*****************************************
; n6 D, V" f2 U: d# F5 q%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
! ^( S0 n' Y/ D. X%****************FM解调******************* z% J0 T0 N3 O0 f- d
for i=1:length(t)-1 %接受信号通过微分器处理' m" R! ~7 C/ a& ?, w
diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;" f( ]4 `6 e6 K2 k e
end% D/ R, L; z8 F& A$ G$ \2 ~% t
diff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
$ F# ~' @, t; X+ _+ xzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
6 d5 I( n/ I2 N( Q) z% X( m) \4 ndiff_nsfmn1=diff_nsfmn-zero;
: F1 w9 }, Q% x5 c n%*****************************************
4 b0 Y2 D x p! ^%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·1 [% U( X0 o2 o7 h3 {9 d
%**************时域到频域转换**************/ o7 s4 H0 L# i* `
ts=0.001; %抽样间隔9 X* w, W9 T' B* R5 L
fs=1/ts; %抽样频率
r; k) @ i& y1 g7 k. a/ Xdf=0.25; %所需的频率分辨率,用在求傅里叶变换% ]( h5 j6 m+ H2 ]0 P; o
% 时,它表示FFT的最小频率间隔7 @; L' c! I7 c: O. Z
%*****对调制信号m(t)求傅里叶变换***** I( o* o3 m7 p5 _
m=am*cos(2*pi*fm*t); %原调信号7 W9 t/ j' v6 v: j9 d* v; L0 ^; b1 D
fs=1/ts;) j% b& Z) }" T2 }- B
if nargin==21 g8 e9 F; Z$ ]5 L% _# O
n1=0;
$ x+ A6 z2 \( P3 \3 Q1 U% e telse
9 D6 ^7 P7 y) j; ~ n1=fs/df;
# u% l5 Y% h, D. jend
# r% n8 u! S" }6 |n2=length(m);) X! \' O7 u1 L: O
n=2^(max(nextpow2(n1),nextpow2(n2)));
0 _8 q, ^1 u& d7 f7 g* @& \M=fft(m,n);
9 X) ?2 d9 \3 i" b+ F" km=[m,zeros(1,n-n2)];9 d# e; ~5 y' E- v6 e
df1=fs/n; %以上程序是对调制后的信号u求傅里变换
* T; |" X% K2 C! rM=M/fs; %缩放,便于在频铺图上整体观察- X/ L1 r/ Q! R3 @9 n7 @
f=[0:df1:df1*(length(m)-1)]-fs/2; %时间向量对应的频率向量
$ z! n3 `& M& h: {, u0 H
, L% N; a7 J) e; r%************对已调信号u求傅里变换**********6 E: f/ ]9 G1 ]( N, }- o
fs=1/ts;6 M% s7 Z2 u6 Q2 q5 c, m) M" [
if nargin==25 L/ t, K9 \: Q+ H9 S( D
n1=0;
1 U; ]7 C/ a q" W, [else
" a; d4 D& N* s- V: s m n1=fs/df;
9 g5 a4 E1 _) R: v. }- yend
& B* a) q/ z, Y1 C- L; sn2=length(sfm);
' p& y! i' M* k- L) ~' i/ Un=2^(max(nextpow2(n1),nextpow2(n2)));9 U' \7 q7 M$ P; X; |$ G/ F/ w( s
U=fft(sfm,n);
& G, e: {4 |& u3 C* @u=[sfm,zeros(1,n-n2)];- x% z/ y2 j2 X! @/ m7 C8 c
df1=fs/n; %以上是对已调信号u求傅里变换
# v+ F% [7 e& U4 ZU=U/fs; %缩放
+ r* u" ^, H- u/ m C6 F' z: Y%******************************************; H( _+ f) n K! ]# U8 e# |7 ^
%*****************************************5 E: {' u# T, ~: b
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·" g5 ?0 O& r% F7 O
%***************显示程序******************; r8 F' E- L( w* I
disp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')0 U9 s( \; |2 f' J
pause
; {! M0 g. Y ~%**************figure(1)******************+ h5 z: I/ u+ a' I" N
figure(1). Y; X* M) G. F- O
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
- d$ N: o2 T& ]/ L0 Uxlabel('时间t');" G5 Q, c* N) f5 g
title('调制信号的时域图');
3 W- P8 s- {- w7 Nsubplot(3,1,2);plot(t,ct); %绘制载波的时域图
& F6 n" }' g7 G, J2 kxlabel('时间t');
4 U4 _' h3 {% \" V2 [ V& P, j- H# Ltitle('载波的时域图');1 c& `; A2 Q7 [7 d. E1 M0 |* F9 e
subplot(3,1,3);0 ], \4 E/ ]# }/ B& O! @6 R
plot(t,sfm); %绘制已调信号的时域图- a7 _% l; t# t0 T
xlabel('时间t');! Q' l) I2 q+ [1 |( S
title('已调信号的时域图');
3 r2 ]& W& e1 ^8 i1 H# x%******************************************$ [2 f( s0 U7 h8 Q$ C( I( U
disp('按任意键可以看到原调制信号和已调信号在频域内的图形')3 S5 ~+ r# H& F6 n3 \4 |
pause
2 ?6 L6 {" G8 ~' c%************figure(2)*********************
4 Y" o8 \: B+ j; Ufigure(2)
" K7 X' [. d- L4 C0 x8 Vsubplot(2,1,1)
4 c1 a9 H! T s P9 \' jplot(f,abs(fftshift(M))) %fftshift:将FFT中的DC分量移到频谱中心
) f4 e8 y4 L1 `, W, @2 f @* Dxlabel('频率f')
0 B* N" b, h$ Q# k2 g2 o- U! ytitle('原调制信号的频谱图')/ b2 [; I! p7 Q! v9 y% u5 v
subplot(2,1,2)
; N3 o) [3 A% {. nplot(f,abs(fftshift(U)))2 L- w7 T/ _1 Z7 O% t5 v$ t
xlabel('频率f')
~& M6 Q# ?8 P+ A9 ?' F% p$ j- Etitle('已调信号的频谱图')
" o4 L. i" }2 @+ ~%******************************************
3 `, t4 d$ J* V- ?; h' O& ^ Hdisp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')5 ^$ \% }" y6 b$ P
pause$ V9 t+ M# A3 I' V
%**************figure(3)******************! p* a( t+ P5 m9 b, i( W! d v& F, E2 X
figure(3), m$ X4 ]( N& W8 u) o2 J# U
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
9 e5 F7 J. x* s, ~$ Pxlabel('时间t');7 A& X/ Z4 T, @7 @5 B% R
title('调制信号的时域图');; u& `# ]* c- v
subplot(3,1,2);plot(t,sfm); %绘制已调信号的时域图6 U4 g: S/ y7 V6 Y7 m; f+ u; @
xlabel('时间t');/ X0 N0 P1 ~4 E1 w
title('无噪声条件下已调信号的时域图');
4 o# T6 V2 ?+ R. M" Wnsfm=sfm;
- K2 ?* J" Z3 T8 u+ i7 q* @for i=1:length(t)-1 %接受信号通过微分器处理" y: J5 O8 m N) G
diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;* s. Y: C- ]9 L& l& h3 l8 C
end
. J; V" _" v' l! @1 d5 Hdiff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
0 m! e- j) Z4 i& u* Vzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;; g8 ?& ~( Z% S' N( g0 _: H
diff_nsfmn1=diff_nsfmn-zero;
- p- C! @6 a/ c3 D; n+ q$ `subplot(3,1,3); %绘制无噪声条件下解调信号的时域图
) ^9 `( ?2 Z# @* K& S/ ~plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
2 z! r" W+ F( i! W4 Y2 Qxlabel('时间t');
4 U+ L% ]9 F" ^+ k) rtitle('无噪声条件下解调信号的时域图');
( i6 D7 q" y# F$ G%*****************************************
* D( q9 m$ V% m. z$ t0 `: z# Hdisp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')& o: |7 D7 j2 n% i
pause
' @7 m. G" f# K%**************figure(4)******************+ r# o9 l* y; a! D. \! C" z
figure(4)
; Z) c- s' i5 r1 ssubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
. X7 ]3 {; a. I1 t. mxlabel('时间t');3 u7 m% |4 S' c3 E+ K
title('调制信号的时域图');! @. b% b% S3 X
db1=am^2/(2*(10^(sn1/10))); %计算对应的小信噪比高斯白躁声的方差5 O7 q, E9 e7 z- F1 O9 Z+ T) F
n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声
7 R* Y8 @9 {9 C4 K& l! _7 nnsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通2 ^- @# B! [: J$ ^+ w
% %过信道传输)3 c, l, t" M$ _& I1 u g4 a' M8 N
for i=1:length(t)-1 %接受信号通过微分器处理+ q7 y1 u& j" O. m
diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;# Y3 |) I- E& @" I9 {+ k
end
3 Y( c* {. j$ D2 }diff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)# U: U1 `! k, l0 G4 t5 t
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
8 O$ s; D. h- cdiff_nsfmn1=diff_nsfmn1-zero;
' z; i" g+ X% ]4 k7 o: O0 k0 Qsubplot(3,1,2);
4 f" r5 f1 x0 S3 o6 m! Z' V4 }6 pplot(1:length(diff_nsfm),diff_nsfm); %绘制含小信噪比高斯白噪声已调信号的时域图" }6 @- z! P( I1 j# j! n% I! m% o
xlabel('时间t');
6 S6 U' n, \8 P B4 s* C5 rtitle('含小信噪比高斯白噪声已调信号的时域图');
5 j' ^- [3 D7 {. I4 f, B% I! ysubplot(3,1,3); %绘制含小信噪比高斯白噪声解调信号的时域图
, b* Q: K8 z5 u1 _plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
' s) h2 W: E; _% w8 ]! rxlabel('时间t'); : }5 I+ ~) |+ ?. F4 }/ n
title('含小信噪比高斯白噪声解调信号的时域图');
|9 ]1 D/ y! w4 \" J: m" t' m/ E%*****************************************
8 b% S i/ A# q3 ?disp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')+ O8 d1 P. R9 ~
pause
% d" \2 p* b' \ T%**************figure(5)******************' L) ^3 K6 V x. \ l
figure(5)9 t2 O k! @3 ^; m% Z, R3 m/ }
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图& W& S* D0 j- m0 _8 y/ X) p8 a2 L
xlabel('时间t');
% u! |: C' E, v0 a% P7 F" Ltitle('调制信号的时域图');
- f* I2 n1 B- g/ V; R/ k4 ? [db1=am^2/(2*(10^(sn2/10))); %计算对应的大信噪比高斯白躁声的方差, A' l1 y% X( n; |% H
n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声
3 P) L5 ^ Q0 `) } |nsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通过信道传输); j! u1 R+ [, A
for i=1:length(t)-1 %接受信号通过微分器处理
p- J, j% ]; a' X& ?, [+ ]; C# n diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
( ]1 k; R- X2 ]1 U5 Dend
( ~3 G) H- g, ~/ B" @diff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包
4 A' w+ ]' \, R( a" _ P% %络检波)
+ @! i# |- e' K% I% Mzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;( X& r5 Y1 }9 N$ G5 H
diff_nsfmn1=diff_nsfmn1-zero;
0 D. `( g; T# Fsubplot(3,1,2);
( N6 y) F8 O( n5 x' w9 h* n9 xplot(1:length(diff_nsfm1),diff_nsfm1); %绘制含大信噪比高斯白噪声已调信号
5 ~. |6 _1 X, R0 [; W4 Y& V% %的时域图+ [2 D& X2 D3 N8 j
xlabel('时间t');
( Q$ P5 V; m0 c& A8 ^title('含大信噪比高斯白噪声已调信号的时域图');' V {# [. ?9 g E* [7 M( `
subplot(3,1,3); %绘制含大信噪比高斯白噪声解调信号* }7 H" ?2 y3 a
% %的时域图
: y1 I/ W1 v6 d4 I- d+ H+ Zplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');, b' Z% }( [& \. ~. w
xlabel('时间t');
$ Z. Y" ?5 z5 K' Y! Etitle('含大信噪比高斯白噪声解调信号的时域图');
+ V0 k" { \1 A%*****************************************% X% q" [2 v! a5 y L/ Q
%******************结 束*******************" a# B s/ J5 c8 G
; @2 I) B' x! h! p
6 S+ U- l9 j9 h8 A7 E0 {4 k |
zan
|