- 在线时间
- 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* v1 s a) e( B# a
%频率调制与解调的Matlab演示源程序
- W9 a* }+ @) F" T+ M) n* ?%可以任意改原调制信号函数m(t)
' |& P& C1 b0 j5 q%电子信息工程 杜怀超 091308305
/ x* r( v7 }, Y- I1 l%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
' o* q# Y: i7 G%*****************初始化******************
/ N$ X' E1 S7 {* m9 E* Mecho off
! h5 ~' _- [& @( n% pclose all1 D3 l' E# A2 [9 g1 O
clear all
& f7 d& D7 }) V) W; ]; s# k% {* O/ yclc& n# B! n) N8 ]1 U& v
%*****************************************
7 L0 g; }4 `2 v2 \* b4 Z& E% y%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·" C! v! y v- G" F3 z( s
%****************FM调制*******************
! c6 t( @& v5 a1 J/ J3 @dt=0.001; %设定时间步长
% A: `3 U! I3 j) Ft=0:dt:1.5; %产生时间向量' [5 \, @' e2 i4 l5 T
am=5; %设定调制信号幅度
( Q. `, y w7 F, u! sfm=5; %设定调制信号频率
9 j- D# f) H. W h! W) imt=am*cos(2*pi*fm*t); %生成调制信号
& X! }2 P0 M0 A! bfc=50; %设定载波频率( T. ^: o& Z @: q3 W/ h
ct=cos(2*pi*fc*t); %生成载波
' f2 x6 c* z9 g/ ^/ x; \' ikf=10; %设定调频指数' ]& l) ~% |0 J2 x1 }( z
int_mt(1)=0;+ o7 V5 S4 [9 w
for i=1:length(t)-1 5 W% X* ^+ E ?/ W ]- c; W! Z8 {
int_mt(i+1)=int_mt(i)+mt(i)*dt; %求信号m(t)的积分
+ H; |/ ]3 T! R Kend %调制,产生已调信号' w. l6 ^5 p+ k* |3 p9 a7 H
sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt); %调制信号
% p, K" K9 ]+ }+ k" w1 R/ n%*****************************************6 N) Z; }, v0 J
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·. f; L- H/ `; \+ y7 e1 D x. Y
%*************添加高斯白噪声**************
: X0 x _: Z/ X" s4 ?9 xsn1=10; %设定信躁比(小信噪比)3 ^$ M# R) E f( V% @( S8 O5 k
sn2=30; %设定信躁比(大信噪比)
% i+ @0 H0 d$ m G ?1 usn=0; %设定信躁比(无信噪比)
8 @0 ]# ?8 `3 C6 u% Tdb=am^2/(2*(10^(sn/10))); %计算对应的高斯白躁声的方差' [5 g) y+ [ l3 `
n=sqrt(db)*randn(size(t)); %生成高斯白躁声
1 v& X$ }# t& E j( xnsfm=n+sfm; %生成含高斯白躁声的已调信号(信号通
l x$ K- K. e/ S+ Z%过信道传输); t' T# H+ j( y5 K
%*****************************************) S- W/ D1 e' f' C, {
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·1 |* K5 v' g) L% k
%****************FM解调*******************
$ E1 Q: }; e: ^0 L$ P* Q4 a6 z% S+ ifor i=1:length(t)-1 %接受信号通过微分器处理
$ b) y+ A! y' D* ` diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;9 w# x z& N3 J0 O8 J0 [- D
end9 N v3 k: w, ^" D
diff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)' {% s. w& M: C, \% Q6 T! H
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
9 q# h( K+ ?: J7 y2 g. ddiff_nsfmn1=diff_nsfmn-zero;/ V5 F; L# c9 Z5 L1 s
%*****************************************
$ F! ~% |- Y/ j+ @7 E% g: U: \% h2 |%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·7 [6 b' ?/ M8 y- P7 H {! ?
%**************时域到频域转换**************
6 |/ ?4 d2 t7 Its=0.001; %抽样间隔
0 r% q3 G, e) W5 X* Afs=1/ts; %抽样频率3 }8 d; O5 {, Q6 I( g& o
df=0.25; %所需的频率分辨率,用在求傅里叶变换
?, e+ Z9 `1 l/ Y8 b5 n% 时,它表示FFT的最小频率间隔* J2 e6 z! a. s- e. h c
%*****对调制信号m(t)求傅里叶变换*****
& r1 l, n/ Z9 V* Xm=am*cos(2*pi*fm*t); %原调信号% O0 I* A. H% H* G- ]
fs=1/ts;6 ]$ r( v) h% O
if nargin==29 [# L) f$ `& l9 V
n1=0;& E7 X/ S0 j3 y/ Q" g" a! e f
else* I( A; c i9 h9 y+ u5 x b. ?
n1=fs/df;; z, G7 i" z( \5 x& D& w7 }
end
* a' Q5 m+ \6 v7 Q, R" Q3 q! un2=length(m);
. ^2 R$ t0 H% I3 N" A3 H, W: In=2^(max(nextpow2(n1),nextpow2(n2)));
& W! `4 \. g7 q1 h0 k- m( I- KM=fft(m,n);
8 C+ A7 {+ `( K% ] t5 Um=[m,zeros(1,n-n2)];& G& L, ?; U7 G y1 H# Q
df1=fs/n; %以上程序是对调制后的信号u求傅里变换- j# ~/ V1 N1 u. Z( r, {
M=M/fs; %缩放,便于在频铺图上整体观察
. ~8 A6 x' X5 x! uf=[0:df1:df1*(length(m)-1)]-fs/2; %时间向量对应的频率向量* v7 w- n, N. x' L7 O) ?9 |7 E
% O8 D; P0 X7 E
%************对已调信号u求傅里变换**********6 z9 R2 l& a8 ~4 B, R+ q; z
fs=1/ts;
* p& P: K/ B$ S! e9 g; Bif nargin==2
9 M0 q! |% t' m+ ?3 ~ n1=0;/ S. F9 H0 G( I+ k, Q
else
5 l; C: G0 w& q7 r" d, m" r6 [ n1=fs/df;
4 s$ w/ u# ?9 Yend9 P& N2 d( e4 g1 N
n2=length(sfm);3 M- i9 D0 Y8 A
n=2^(max(nextpow2(n1),nextpow2(n2)));
' e; Q: Q4 e ^+ q2 E% kU=fft(sfm,n);, @* p( G8 F, |+ P) l1 g
u=[sfm,zeros(1,n-n2)];/ e( e |3 ]+ H# z
df1=fs/n; %以上是对已调信号u求傅里变换% j9 L r1 B/ R2 Y" `; y
U=U/fs; %缩放- j: w- q2 }& s! p
%******************************************
% m: l- ~% {" \/ N$ ]# E e%***************************************** Q* }9 Z& y6 w/ k O
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·3 \9 t4 {0 U+ O6 V: M3 |8 {
%***************显示程序******************
% X1 N- [5 {' R: ydisp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')
: x! S# \# e: x2 [2 b# ]pause
( t+ ?& N" a% r- c. _3 S%**************figure(1)******************6 w* M; }+ m3 ^+ H7 Z
figure(1)& z s& r3 k/ r2 g: Z5 ?. }2 ?
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图7 i& ?1 D1 T% @/ C
xlabel('时间t');$ N3 u% M; }9 K
title('调制信号的时域图');
$ r9 I: W$ J; W7 k4 F; |+ S# fsubplot(3,1,2);plot(t,ct); %绘制载波的时域图4 i" g& C( h6 D! L! {( p4 N5 {
xlabel('时间t');
+ u. S- d7 L2 j# \- n' Mtitle('载波的时域图');
, [% m3 P; g4 k9 j1 V' ?. b csubplot(3,1,3);" L% G, A- y- f( i4 Z
plot(t,sfm); %绘制已调信号的时域图
8 m4 H$ m- x: Q1 xxlabel('时间t');: ?# j7 y; n, Y" N9 J8 z$ a0 v0 S: `
title('已调信号的时域图');
! {! w! l) \7 f) e2 E%******************************************
( \% j4 i& V5 m; j3 ^disp('按任意键可以看到原调制信号和已调信号在频域内的图形')
& ]" a$ ?( @- \7 qpause0 ~, w3 B+ N* b5 o: ?
%************figure(2)*********************
: L* Y ^0 K8 J1 e: k: q H' }figure(2)* R7 t& Y3 Z Q! E8 ^
subplot(2,1,1), } D3 C' H3 ] P0 o% ]
plot(f,abs(fftshift(M))) %fftshift:将FFT中的DC分量移到频谱中心& c* l6 U$ B9 x: Y. \' }$ b' J" ^
xlabel('频率f')
' c* @3 b1 q5 V+ n# Mtitle('原调制信号的频谱图')( [ |' r% g# b% Z1 `5 O
subplot(2,1,2)
0 y. b& \4 v1 n: b/ ^( D& kplot(f,abs(fftshift(U)))$ E, k: _5 q2 I6 y, G
xlabel('频率f')
# d3 P" Y6 v, R& N0 e. mtitle('已调信号的频谱图')
8 q# A9 Y% S% r$ X%******************************************* v3 _& z8 ?, j) u+ J5 ?
disp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')
2 H: Z9 D; u4 r9 T0 n. Z" f* [* G) Qpause4 w# V/ q& B( B& f1 Y
%**************figure(3)****************** S6 a W5 ^- l. ^5 E* K0 @/ W$ r2 ?
figure(3)
7 \) C) e3 E- e( n) F& [) I+ t1 bsubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图 j+ S# x, A2 @( F0 R- ] `
xlabel('时间t');
: t5 b1 C# z, Ntitle('调制信号的时域图');
3 U Q- B: S. } Z. K; j8 ysubplot(3,1,2);plot(t,sfm); %绘制已调信号的时域图
/ J- G' e4 V: Y8 }: txlabel('时间t');
, ?; G7 z3 e# c' G) Ztitle('无噪声条件下已调信号的时域图');6 A0 e, t/ M; _2 p2 L% \ b
nsfm=sfm;
/ c" k( P+ w( u* s& Y3 Q+ v. Pfor i=1:length(t)-1 %接受信号通过微分器处理
$ S, j) V5 F& H diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;" F( i& ? n+ E7 h. [
end7 Q K* x1 ^' q7 X% w0 B
diff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
+ }! V% _9 t$ T. E+ j! `9 vzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;1 I1 U3 }# I4 m8 o5 {
diff_nsfmn1=diff_nsfmn-zero;! N: w5 T- O. K5 m# D r. x
subplot(3,1,3); %绘制无噪声条件下解调信号的时域图
W* q2 q* k- F6 f* Kplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');! z6 s6 Y" b- c; ?
xlabel('时间t');
: ^5 y8 v7 J% P5 }' g$ btitle('无噪声条件下解调信号的时域图');
3 n1 Z' L7 {$ u+ Q%*****************************************
6 a0 U6 D; t" i1 Odisp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')/ Z! w) E) m! g9 N+ f
pause
6 v" Z# M( `% z$ x) G. b" a%**************figure(4)******************
4 h' T) m$ a& b W2 dfigure(4)
& Y. ]) r% O2 J9 Jsubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
( N9 ^8 q Q5 i: ?0 }! u1 Z+ O [7 qxlabel('时间t');3 q% d; q# h4 O+ d9 D5 _# V- k0 v
title('调制信号的时域图');3 _$ C3 R: r0 @- m, h$ J* F
db1=am^2/(2*(10^(sn1/10))); %计算对应的小信噪比高斯白躁声的方差2 O' s% F# D- k1 H; j8 o
n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声
5 v* B$ X; j" i& R" onsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通
4 U" R& l* ?& I+ m% ~+ p% %过信道传输)/ G. G) b, K( Z7 T6 G
for i=1:length(t)-1 %接受信号通过微分器处理
/ h. ^3 |# W9 s5 [, ?* h$ | diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
9 P4 n+ y W1 ^ tend
* i: u) W* M# I2 `7 fdiff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)- S! R; H+ i7 C$ y8 m8 p. I9 a) N
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2; Z" F9 H7 n R6 v- E# O& C
diff_nsfmn1=diff_nsfmn1-zero;4 r* {! u- V* U( t. h- a# `2 l
subplot(3,1,2);
5 K0 K1 {, y8 D9 O% Q0 y. K' k* v+ uplot(1:length(diff_nsfm),diff_nsfm); %绘制含小信噪比高斯白噪声已调信号的时域图
! O- A0 o. t5 }; {xlabel('时间t');
1 }7 w4 \5 a7 W% k* ^title('含小信噪比高斯白噪声已调信号的时域图');
2 [9 i) o: S) _. fsubplot(3,1,3); %绘制含小信噪比高斯白噪声解调信号的时域图
* Y% L/ P$ A3 ~2 |plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');5 Q/ N2 |) C0 `" V L
xlabel('时间t'); 7 G% Z! Z2 A4 y+ A
title('含小信噪比高斯白噪声解调信号的时域图');
" m) r0 {/ V; e: p5 S) N%*****************************************
4 j# ~$ K9 K5 p$ H- z; Adisp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')( L; h" H) L8 J! d- q( O4 P; H
pause
. L; J2 l; p( z- [5 ~& ~' z%**************figure(5)******************
! z0 ? W/ Y( d. J# Jfigure(5)
; \- \% O) z' H" }# Rsubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图/ `- M( F2 N# O$ [- g' K
xlabel('时间t');# E N! m% ~$ R2 R, l, G
title('调制信号的时域图');
- ]$ c# _* p% S7 d, C* X6 ~$ n2 xdb1=am^2/(2*(10^(sn2/10))); %计算对应的大信噪比高斯白躁声的方差3 w( ^8 E5 p5 z' s. S1 c8 O: v7 N
n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声
: T: r8 b- o# w o7 A( Onsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通过信道传输)
0 T* c6 p1 P/ T, Yfor i=1:length(t)-1 %接受信号通过微分器处理
& T# @& Z& [3 Y" |1 V# w* U diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
1 ^, {6 u& F, D" T4 dend
8 \2 s2 Y9 ]. C8 M9 L2 G# s/ v; h2 ddiff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包; r( z/ y R8 r' R3 k) Q5 X
% %络检波)" i1 ^1 w8 Z4 D8 f3 T+ {
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;- L6 g( g3 [- |
diff_nsfmn1=diff_nsfmn1-zero;
) u t$ Z: l% O& y) v( m5 Jsubplot(3,1,2);
4 H9 r; y x* D/ Tplot(1:length(diff_nsfm1),diff_nsfm1); %绘制含大信噪比高斯白噪声已调信号5 D8 u6 \6 X; v$ C5 c0 R% ~# n
% %的时域图& a4 I! J! K! U1 @
xlabel('时间t');
8 X6 m) a) O6 F7 Stitle('含大信噪比高斯白噪声已调信号的时域图');! G6 U" y4 X1 j0 m' |/ v, J
subplot(3,1,3); %绘制含大信噪比高斯白噪声解调信号
) O1 k5 r8 V! H4 B- D( z, S% %的时域图* K( @9 I) w2 O) E
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
$ v2 }/ V5 E0 K3 lxlabel('时间t');
# a( Z* M9 j, o* E- l* mtitle('含大信噪比高斯白噪声解调信号的时域图');. `& s% \; u" m7 G5 _( y/ w# @
%*****************************************8 \9 H* ~# G- A3 n. H
%******************结 束*******************
" D: H6 J" h2 R5 G; K
) E# ~% C' P/ h; _" L3 n& [0 q6 [) t" ~, @' x
|
zan
|