- 在线时间
- 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
* p- K% }7 {( ^* C, v$ W9 L%频率调制与解调的Matlab演示源程序
F- m/ H* |1 m%可以任意改原调制信号函数m(t)
& W2 q$ _. n% i6 |8 W' k0 u" j%电子信息工程 杜怀超 091308305 * A7 h, y5 C% ]3 P& j% f/ P. n# C
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
) T. H7 s; r& ?& g: U3 @6 z' z' R% D%*****************初始化******************
/ ?/ U/ {8 r: c7 f7 @ Eecho off
% t/ N& f7 ?+ G6 R, u3 e; Gclose all3 @1 J3 P# B: r- P& Z2 d" P1 d+ b) p1 H
clear all5 H$ }7 U6 O8 G# C- F5 P4 c
clc
* f6 x8 I. j3 l% {7 o%*****************************************
% c. k- s* t" _: _" j%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·: L2 C( I! G9 z2 G
%****************FM调制*******************" M& a# U8 ^% K$ `- X6 \" L
dt=0.001; %设定时间步长0 k! l3 Y1 {. ^
t=0:dt:1.5; %产生时间向量
. G; K T8 O t7 G* [+ nam=5; %设定调制信号幅度
" H. [1 v6 l3 K% t, P, f( Efm=5; %设定调制信号频率% r o- K9 l$ w8 G
mt=am*cos(2*pi*fm*t); %生成调制信号
1 O+ c1 M Y8 N) W6 |fc=50; %设定载波频率 C. w! J; {& G& z
ct=cos(2*pi*fc*t); %生成载波9 x- t7 P2 V5 C3 e9 C. f! t
kf=10; %设定调频指数
. X9 t& w1 u2 Z! g- q1 Lint_mt(1)=0;
6 B k4 [ {: Bfor i=1:length(t)-1 - Q3 n$ E$ `) L* q3 w
int_mt(i+1)=int_mt(i)+mt(i)*dt; %求信号m(t)的积分
4 C. n7 a5 |, F9 ]! M K% J' Eend %调制,产生已调信号9 }/ m- D4 g# i
sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt); %调制信号1 b3 u3 Z/ E9 O; f* Z
%*****************************************+ x2 Z0 S1 f [, z6 E. L
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·1 ], j" W$ a a5 V u
%*************添加高斯白噪声**************
4 h4 [0 Y' e# m6 {4 Z% Lsn1=10; %设定信躁比(小信噪比)
" D; L$ |3 q# Y1 l( f# B6 F7 e' N' Jsn2=30; %设定信躁比(大信噪比)
' T/ X) m {& p9 d: E. _1 \& {' tsn=0; %设定信躁比(无信噪比)) C( D9 N( d9 O! t0 S: ~& y
db=am^2/(2*(10^(sn/10))); %计算对应的高斯白躁声的方差& N7 w* n. V E9 i, \7 D4 _9 a
n=sqrt(db)*randn(size(t)); %生成高斯白躁声
- K* Z9 B* c& tnsfm=n+sfm; %生成含高斯白躁声的已调信号(信号通
5 q" S2 _, x- f' j& P8 {%过信道传输)* j, |" t) {; c/ F1 @
%*****************************************
K2 p3 Q/ A" l4 E! K s4 a8 L%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
" D) o; e& N$ v& x' _% V/ y%****************FM解调*******************
: i* H4 n x$ d4 ?/ Wfor i=1:length(t)-1 %接受信号通过微分器处理7 @/ E, F0 ^( [4 m: g
diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;) |' w3 g% V: s5 K* h/ H+ u! [
end9 Y/ e2 c7 d# Z5 |
diff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)6 m2 b0 b/ c3 q4 \4 {
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
7 R- ^8 d# S \7 y; u2 bdiff_nsfmn1=diff_nsfmn-zero;4 e& P) P/ }% @5 I' m" Z
%***************************************** E+ O" j% O% i' F, g
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
( `; [# i/ a3 s6 F9 G7 k- d%**************时域到频域转换**************
, ]9 {, k+ P; d8 }+ G8 o1 @0 ^ts=0.001; %抽样间隔
. H8 X8 f; y, C9 a0 H; W& C! Kfs=1/ts; %抽样频率# d, v6 O- N8 O: t# G+ a
df=0.25; %所需的频率分辨率,用在求傅里叶变换. _5 w5 [+ u9 F% |* W: E
% 时,它表示FFT的最小频率间隔, i/ Z) X& ~% ] g# f2 T* I) D
%*****对调制信号m(t)求傅里叶变换*****% H( ?. u* p9 a( ~ x/ G- h- O/ X. D x
m=am*cos(2*pi*fm*t); %原调信号! U6 l! z0 ^$ P
fs=1/ts;6 N6 q' K* E/ U# A3 R! ^4 A
if nargin==22 c1 w* g2 `' m# z
n1=0;& V1 }/ G. Z, q- ^9 u$ h+ e
else/ U5 o8 o0 i' D1 }
n1=fs/df;
6 y) H) F6 I% X ~& `$ mend1 E7 B; F! c Y/ J: g6 n
n2=length(m);
+ M/ x$ L. I: F( {$ k0 ln=2^(max(nextpow2(n1),nextpow2(n2)));3 u8 _: O1 R' @/ U
M=fft(m,n);) l5 a% Z0 ?" q6 |+ {+ M
m=[m,zeros(1,n-n2)];
* E" `% w1 ?8 @, C) W8 |df1=fs/n; %以上程序是对调制后的信号u求傅里变换/ X; u) z4 B* N% N: J
M=M/fs; %缩放,便于在频铺图上整体观察
# t: \9 d$ v6 J* If=[0:df1:df1*(length(m)-1)]-fs/2; %时间向量对应的频率向量2 s& |0 k; e. c# H# ^/ ~
9 \( f3 }) p& b" ?6 {! [" L, ]0 e
%************对已调信号u求傅里变换**********
: t7 ]" Y8 p( a c9 e; B8 Y8 w) zfs=1/ts;
. p, h8 P+ g7 o7 K' c, W9 [ ^if nargin==2
& ]7 l* V: c- R6 n$ ?) X. S$ T0 n n1=0;
& w) W, f- s" }6 Y/ Kelse- q6 e' d+ a7 T" W* s3 W
n1=fs/df;
) Z. s- e7 C% eend
1 n& c$ x; g( W5 l, V. \n2=length(sfm);
4 m0 A, k' A- z' @% E: z: xn=2^(max(nextpow2(n1),nextpow2(n2)));
' z: q* T0 U& E- @! C# KU=fft(sfm,n);: B: Z S4 p1 l& h3 v* U
u=[sfm,zeros(1,n-n2)];* m# L1 g7 a! d' b
df1=fs/n; %以上是对已调信号u求傅里变换
. J! Y- E* z' ?! _% KU=U/fs; %缩放
( {5 [, `/ D5 S* W' A6 d%******************************************! }( T [( Q& X; A
%*****************************************8 H: W* c" @0 {" R
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·3 ^& a+ R" D: w( O, p
%***************显示程序******************
/ }( [3 T! t$ N- idisp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')
# x% F Q9 n1 W; ^8 {2 {% ipause
8 n: j) m: C# G8 r%**************figure(1)******************4 l% j" D. {( m% f
figure(1), I/ H+ A) W# ~0 R
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
1 A- ?2 M0 L; f! G# Z, _ L8 mxlabel('时间t');
$ v, F6 W7 b) S" ]( etitle('调制信号的时域图');
' A% N7 G9 G2 v+ |; e- \subplot(3,1,2);plot(t,ct); %绘制载波的时域图
0 |# y7 [% J5 A8 s1 Vxlabel('时间t');+ g( m% k8 s7 l% c& H
title('载波的时域图');1 [+ |: e. N/ p! P
subplot(3,1,3);
3 g! _# Q- K% v0 X1 w5 `" splot(t,sfm); %绘制已调信号的时域图
; I T, e; }, Z+ I1 ]xlabel('时间t');! d! ~# R5 Z: @2 `+ a [: s
title('已调信号的时域图');- a/ ^* @# S+ @* h
%******************************************
$ t- z: j0 A' o& h7 Sdisp('按任意键可以看到原调制信号和已调信号在频域内的图形')# R5 a4 C* L, o6 O. ]) X- T0 E
pause
1 X2 ~" i6 a9 F: S8 Y%************figure(2)*********************; W0 t P4 E+ V6 R* b
figure(2)
0 Z- J7 C5 B2 ksubplot(2,1,1)8 h$ @) h& n* E% x: [7 ]* y1 |
plot(f,abs(fftshift(M))) %fftshift:将FFT中的DC分量移到频谱中心. _- }( j" r& b- d9 D* E( Y( c* e4 k
xlabel('频率f')7 ?( q! M+ s2 Q
title('原调制信号的频谱图')
2 H' T3 e6 W5 J! [0 P4 l0 e3 ?+ Qsubplot(2,1,2)
( q# r r3 W' L2 U) }1 I( F* x8 A% mplot(f,abs(fftshift(U)))
0 \4 b- L i3 M$ {8 k* Sxlabel('频率f')% O( t" r9 g: R. P; `: ?, K
title('已调信号的频谱图')9 r( T# `. C6 L: e
%******************************************7 o' M$ l0 I$ E4 S4 C
disp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')! e& w* P( o1 i6 _, I D4 v
pause: h6 [; R' X& |2 K1 n- _/ v
%**************figure(3)******************
- v1 S7 L+ K6 D% `7 g5 [2 ~4 y1 Y: ifigure(3)* p2 p) M5 t0 f% o
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
2 O% V+ T& O& r: V/ Vxlabel('时间t');8 L( d$ O% W. d1 _
title('调制信号的时域图');* @4 D- w$ ^# t
subplot(3,1,2);plot(t,sfm); %绘制已调信号的时域图
: X, q9 l9 O2 M, u" `1 N& i9 `xlabel('时间t');
$ d* Z. M# ^" O. m7 etitle('无噪声条件下已调信号的时域图');) `. f) S( k3 N; W
nsfm=sfm;
3 d2 ]3 I: P# M- h3 K/ G1 M# `for i=1:length(t)-1 %接受信号通过微分器处理
! O0 c# u5 ~. f. Z diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;, ]- [" ]# f. s: `
end
3 Z- N- M8 [- G3 s1 vdiff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波). q- B9 g. n1 B" I* q' W9 N
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;1 `9 y+ E9 A# x' `
diff_nsfmn1=diff_nsfmn-zero;
0 U9 S9 a6 X u3 B, x% Y1 e2 vsubplot(3,1,3); %绘制无噪声条件下解调信号的时域图# ]' i: l6 T1 j
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
6 }+ p# i- `# p! ^* q3 xxlabel('时间t'); 3 G8 f3 Y/ W, S% `) X+ G& E
title('无噪声条件下解调信号的时域图');
( w7 D& T/ }, m5 v. f1 t8 J%*****************************************; G6 }# b) m9 o2 H( P- M
disp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
4 i8 B: W- D0 e) Y, G d( q+ _# l9 qpause, s6 d, a l. l6 F% D5 e
%**************figure(4)******************
! [: G0 p% o; d- i0 Y: `figure(4)
6 C# N) [. t- h9 m. y! [: }) @subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图+ O: z, p! l7 M; o. }
xlabel('时间t');
: `9 Y) B8 G5 K. ^7 y6 Ktitle('调制信号的时域图');
. B' I8 z% C' x. wdb1=am^2/(2*(10^(sn1/10))); %计算对应的小信噪比高斯白躁声的方差
8 P! _) w2 I& a- Wn1=sqrt(db1)*randn(size(t)); %生成高斯白躁声, K7 N; T! L! R7 y; Y9 Z9 k
nsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通
5 h9 y7 v2 j2 q# R% %过信道传输)
1 T: v0 r, q3 t8 ifor i=1:length(t)-1 %接受信号通过微分器处理% B$ ?6 @( y v. `( A+ ]/ z
diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;: M" k8 A4 H O5 ?
end1 ^: w3 {5 S) b6 w/ W# j# ?( b
diff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)8 a& D: _1 ?+ H1 Y) L4 i/ t
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2; Z1 Z, H6 B9 _, b; M) G0 d
diff_nsfmn1=diff_nsfmn1-zero;
# x( \: e6 |3 r# Tsubplot(3,1,2);
8 ^; w, H0 {1 _9 n& I% l' iplot(1:length(diff_nsfm),diff_nsfm); %绘制含小信噪比高斯白噪声已调信号的时域图
( t/ C2 X! r: r. Oxlabel('时间t');
) M5 C2 U- r6 X# F0 stitle('含小信噪比高斯白噪声已调信号的时域图');! a7 u% f4 B* D' v4 e0 p
subplot(3,1,3); %绘制含小信噪比高斯白噪声解调信号的时域图
/ O, ?" A: B/ ^- pplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');; p' M" Y0 Z$ R/ ]0 x! N9 `
xlabel('时间t');
0 y6 r/ [2 }# C5 Q2 stitle('含小信噪比高斯白噪声解调信号的时域图');0 d$ P( m$ s3 d/ T% w4 T4 l9 e& m
%*****************************************
% H R; L" Y8 }6 m: Hdisp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
5 W* g3 L) w! q% `pause
: `2 y' C T6 M( ^. U, h) T%**************figure(5)******************3 y+ ?2 s5 ~+ b
figure(5)
( f+ j7 i# c, X" \6 esubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
1 |4 G% ?! M% f, Z; P' Sxlabel('时间t');2 F, f5 w0 t" }8 B: n
title('调制信号的时域图');
7 a1 e5 u) F8 ldb1=am^2/(2*(10^(sn2/10))); %计算对应的大信噪比高斯白躁声的方差( B2 D2 M1 M3 _' C9 r2 w
n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声
' g2 ~5 ~- l) K) t% qnsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通过信道传输)
5 u: T8 l. W3 `% Zfor i=1:length(t)-1 %接受信号通过微分器处理0 e% u! I0 B4 x9 N3 S3 P- \8 q( M M
diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
* h$ c1 G; H1 I) L$ Bend
- f3 o3 ]3 O; {1 G) s& Zdiff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包
0 ]9 X9 Q4 [8 v1 U$ Q% %络检波)8 k8 B% p* X- V4 @3 a9 n% D# x/ l6 g
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
; i( k; |3 A. i- ^diff_nsfmn1=diff_nsfmn1-zero;: h: T! q) l* q5 W) T* e6 n' G2 j
subplot(3,1,2);
( j/ h% m# F" i. c$ C ~' qplot(1:length(diff_nsfm1),diff_nsfm1); %绘制含大信噪比高斯白噪声已调信号3 J0 G) O6 H4 w" H5 t' g
% %的时域图0 y+ g0 w' ?" ^7 m; S% y+ o
xlabel('时间t');
8 b) O6 w9 ]$ B( J1 otitle('含大信噪比高斯白噪声已调信号的时域图');
; I' {4 o a. W+ W6 zsubplot(3,1,3); %绘制含大信噪比高斯白噪声解调信号
' [7 M4 T% @9 p' D% %的时域图
2 Q/ }+ S8 c9 z8 M$ k* U6 jplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');1 [& w6 w* f9 C) p- `
xlabel('时间t'); 1 F" P% m, _0 ~/ Y2 j
title('含大信噪比高斯白噪声解调信号的时域图');
3 j [3 }$ f1 A# t! k%*****************************************
' H- t- `8 s1 R& g7 U: b%******************结 束*******************+ [4 `9 [- M+ g% B* J7 _3 u
" Q: ^( @. V0 ?% O8 h4 N9 C; \) `9 }7 v% \3 [$ O& r9 A
|
zan
|