- 在线时间
- 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% E8 g) ], t( q+ J% r$ P$ f
%频率调制与解调的Matlab演示源程序
! s$ i* h3 U/ F" y' D8 Q+ ]7 r%可以任意改原调制信号函数m(t)# @9 j( O. f0 r0 K
%电子信息工程 杜怀超 091308305
$ z. M8 l& G* k' r; D%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·% h5 ^- j8 [2 U# Q: D
%*****************初始化******************
2 Q' P- m) Z4 l5 g# c* Gecho off 8 O+ n, _% E, ~5 M8 K
close all/ h+ S/ ?& v% Z0 u
clear all: b8 P, Y. y/ V" o1 I
clc
: e+ Z* z' u H6 w2 k% {%*****************************************' Z$ d5 ` ]1 c4 C2 ^, ~
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·9 v1 `0 Z) g. z2 j
%****************FM调制*******************
* h6 _! R9 a; k; ]. c* T# A% ndt=0.001; %设定时间步长8 u' Q. h2 X3 J
t=0:dt:1.5; %产生时间向量
/ ]2 ~+ L1 n8 _$ Q5 q: { f3 ham=5; %设定调制信号幅度6 L3 e1 c C: C- r
fm=5; %设定调制信号频率
% `2 I. C! @0 x+ c# zmt=am*cos(2*pi*fm*t); %生成调制信号" \5 ` p% j: z7 ^5 Y, W
fc=50; %设定载波频率2 W8 @; u& a6 s+ }' K! j
ct=cos(2*pi*fc*t); %生成载波7 G; P( w& p+ @) K# @
kf=10; %设定调频指数
. H& Q/ ?$ Y v# `' `! V" |int_mt(1)=0;+ r1 e; `& R! ]
for i=1:length(t)-1 0 c: H X9 v0 q3 [- T
int_mt(i+1)=int_mt(i)+mt(i)*dt; %求信号m(t)的积分$ \! ^' h9 R ~0 [, n6 E" @
end %调制,产生已调信号
+ b7 r+ M+ [4 U- N5 jsfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt); %调制信号' ~5 P2 F# h$ P, v2 ]4 F8 M+ q0 [
%*****************************************
( B4 M& I" k. C. A/ q9 p2 f%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·: u1 `" [( _3 X
%*************添加高斯白噪声**************
# n* i& W. g' j8 H1 |1 F& h" x) |sn1=10; %设定信躁比(小信噪比)$ S& k8 H; o& D2 O4 R
sn2=30; %设定信躁比(大信噪比)/ S1 d( a* _( O; q% Z0 y8 M. p: [3 ]
sn=0; %设定信躁比(无信噪比)
6 z/ c9 _7 K2 `db=am^2/(2*(10^(sn/10))); %计算对应的高斯白躁声的方差& w& a7 L& ]$ s8 }' p! N
n=sqrt(db)*randn(size(t)); %生成高斯白躁声
" L3 f! L- _; U& }/ Vnsfm=n+sfm; %生成含高斯白躁声的已调信号(信号通3 j( y! w2 w( o* [+ D
%过信道传输)
+ X9 Y1 F: I: I2 o1 k1 f7 U%*****************************************
) b9 u7 z* x i y& u6 ?! V%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
$ {( d- ^2 t, {2 b2 Q' l%****************FM解调*******************
6 ?: X* F5 n7 ]9 e m( jfor i=1:length(t)-1 %接受信号通过微分器处理
3 t( z2 G% q, X- F9 [ diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
4 @0 u0 P7 h: I) l. `# cend
5 r2 f2 A& ^* @2 S2 V/ F& K* S0 ?5 @diff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
7 q5 T ^3 M' `% rzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;+ r C# J7 O. d: Z" [( w1 U" G2 P
diff_nsfmn1=diff_nsfmn-zero;
. J- e8 S5 J) t7 g: m%*****************************************
3 |/ J+ L) `3 {5 \%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
' ^9 z. H8 V4 X& u2 ]0 y%**************时域到频域转换**************
! M6 S' n! H1 E8 c1 w& ^ts=0.001; %抽样间隔 i4 T! R" ^, y0 R$ R5 d
fs=1/ts; %抽样频率
. w U4 @, O4 n8 d; }df=0.25; %所需的频率分辨率,用在求傅里叶变换5 g7 E/ E. @$ l. j. \
% 时,它表示FFT的最小频率间隔
1 }7 S* D* q6 l1 _%*****对调制信号m(t)求傅里叶变换*****) \, \* V4 e( L. B& H/ I& q% j
m=am*cos(2*pi*fm*t); %原调信号% X3 i) ~/ N. O+ j( d
fs=1/ts;
( T2 j. a! o$ X# x0 p7 a" i8 y8 zif nargin==2
! O- A5 ^% f5 Z$ H8 Z; r n1=0;: i& Q7 d' E* W6 q2 s" t1 |
else
7 J- x' m% A2 M/ Y8 K1 P; W n1=fs/df;4 k; E. c# c& @0 ]
end
5 K1 `! K/ b1 W- An2=length(m);
8 y3 h- f" c+ z& W; o$ a: dn=2^(max(nextpow2(n1),nextpow2(n2)));
! U* ~7 q; t/ PM=fft(m,n);3 c/ V, ~0 r: }
m=[m,zeros(1,n-n2)];1 T$ ~! P# x% z' ?) w; X
df1=fs/n; %以上程序是对调制后的信号u求傅里变换
1 G4 V! X$ |6 U$ [# W$ q+ O4 T2 zM=M/fs; %缩放,便于在频铺图上整体观察
" H: ] S9 `5 ]' r2 of=[0:df1:df1*(length(m)-1)]-fs/2; %时间向量对应的频率向量& M0 K( e, h2 d0 ?8 H; L3 ]
" l. A& R5 H' |% _
%************对已调信号u求傅里变换**********
% y6 L. U8 F% N$ T8 \8 ffs=1/ts;
& o* n$ Y7 f# n+ @( m, Q: Z4 v4 jif nargin==2
; K5 s% T3 c8 u8 U n1=0;% j2 U" y) S; `+ o; b5 L
else
1 o: p" U0 O, j4 ?0 f$ ?# j {$ ` n1=fs/df;
/ g, E* z- _. j: O) k3 ~2 }end
# K% B, [ G$ J- g4 V& R, |. En2=length(sfm);( |8 H. t# y. i$ g9 l( P# K
n=2^(max(nextpow2(n1),nextpow2(n2)));
' }4 P: d0 L2 T8 W0 eU=fft(sfm,n);% g; Y; _* J' _; q8 u. r: h
u=[sfm,zeros(1,n-n2)];
' b& K: N- F% H' |6 e L" Ddf1=fs/n; %以上是对已调信号u求傅里变换9 O/ x8 y' h6 J4 y
U=U/fs; %缩放
0 {7 r" [& F. s5 e6 d4 g%******************************************
/ S8 x* b9 h0 g- e& w%*****************************************
% R6 @7 ]) t, k: l%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
# B9 o/ V. T, K# w1 }4 _& J%***************显示程序******************9 `! U( X; D- C
disp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')
Y8 t# I% S' m# E/ c; Ipause! H4 F* x% T- }* D
%**************figure(1)******************
$ c1 O: G& J4 m% ^6 s0 @figure(1). N( {0 G$ Q8 |$ _4 w1 Y
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
2 @- v6 y5 }/ J' s$ x! c8 Wxlabel('时间t');
( g8 H: e+ \8 D- ]title('调制信号的时域图');
# h5 O; M, @' T& U4 J# esubplot(3,1,2);plot(t,ct); %绘制载波的时域图6 K! N, }: k9 ]: F; X* ]9 y
xlabel('时间t');
$ z: g# R3 J' H' Etitle('载波的时域图');
; ^/ ?) H# f% Q/ xsubplot(3,1,3);3 X% A( _+ U$ f; ~
plot(t,sfm); %绘制已调信号的时域图
( Q8 I. i! H6 X# i+ Oxlabel('时间t');
6 f3 S9 B9 N0 j' P( \8 e: Wtitle('已调信号的时域图');
+ b1 I. U3 t" j1 f" b" z# R" v%******************************************
# \4 u+ n+ k2 ~& p+ o# O6 jdisp('按任意键可以看到原调制信号和已调信号在频域内的图形')
V w3 y8 U( Spause
/ \7 u. H9 J; {! S# |+ G7 N%************figure(2)*********************5 O: h* i0 X6 X. ~' K$ m
figure(2)1 A0 C; Z ^5 z/ X3 \
subplot(2,1,1)- d# @" R4 O5 ]( D
plot(f,abs(fftshift(M))) %fftshift:将FFT中的DC分量移到频谱中心
# y1 o3 c$ p0 j, f" y/ jxlabel('频率f')( ?- ?3 B) R5 g# I ~4 A) \
title('原调制信号的频谱图')
" o" j; Z- k: g( S' N8 zsubplot(2,1,2)
* J2 b8 K6 j' P( vplot(f,abs(fftshift(U))); }0 }3 L/ K6 S- ~* a. ^# l i6 B
xlabel('频率f')9 R0 a0 x6 q) a5 j" p" B7 J' K
title('已调信号的频谱图')
* K9 d5 F& ]' U( E- C4 s7 `%******************************************
4 @- x) i: ^: V' u9 G* r8 ndisp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')
, S$ l4 \# h8 q5 @' z0 Lpause7 }4 g5 [9 Q6 q0 u1 z/ [
%**************figure(3)******************
) Q. E5 s5 ^! ]! I3 u: P N lfigure(3)6 `8 ^7 [2 W# T4 ~
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
$ D1 m4 S- F; R, S- o; h7 Vxlabel('时间t');. u6 L7 o+ s p( X0 P
title('调制信号的时域图');" \' |& F# j2 N8 Q2 T: V. m6 c
subplot(3,1,2);plot(t,sfm); %绘制已调信号的时域图
% e v7 [1 |% b6 Q$ R! Mxlabel('时间t');
/ L: @4 E0 [& y8 W, k! ktitle('无噪声条件下已调信号的时域图');$ e% o+ X& ~4 c o$ a0 f: P, [
nsfm=sfm; 1 f. g$ N% j$ {) X* p
for i=1:length(t)-1 %接受信号通过微分器处理
+ K! F* q4 x' ?' w9 Z+ c diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
1 |* X: F: q- r) ^end& g3 k) D* @) [
diff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)8 f" }# e# V: A( a( |4 O
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
/ A* k% `" p9 { K. Cdiff_nsfmn1=diff_nsfmn-zero;
) ?5 t' d5 k& S, f. Fsubplot(3,1,3); %绘制无噪声条件下解调信号的时域图 ]8 F0 v2 @$ O* H, R% c
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');9 x) D8 u8 x7 `8 Q6 L: ?2 n8 K. `
xlabel('时间t'); * L9 D. k6 ~& g, N _. u% D
title('无噪声条件下解调信号的时域图');
; G/ v: u- j: t7 @%*****************************************
& c2 P8 ~5 W3 }/ W9 v# H6 Q; I. hdisp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
& }- |: c. S% _& i5 P# _pause
! j, v+ a5 m# P6 n%**************figure(4)******************
! r* B3 V- F8 w. d4 kfigure(4)% ~( P5 O' S1 g! @* U. N% \4 w
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图9 e+ Y8 k" l( _! |: Z
xlabel('时间t');2 a" j5 j" @! y3 `8 r. }. i. _$ L
title('调制信号的时域图');
) s4 S( p6 V4 M* hdb1=am^2/(2*(10^(sn1/10))); %计算对应的小信噪比高斯白躁声的方差
. R' N: b- D( \+ _; {7 K# e7 `3 on1=sqrt(db1)*randn(size(t)); %生成高斯白躁声$ M1 s1 @: ]# d! l! X+ E
nsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通
5 f6 G& N' o* U# M' O$ h1 @% %过信道传输)
8 F! v8 u5 n0 S, E! o/ [2 Yfor i=1:length(t)-1 %接受信号通过微分器处理
3 W3 `( U4 k/ l! V, S ?, u diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;9 R# F7 g/ V H! \ k. }' {
end$ ~) L/ V2 E# S3 Y3 l/ H
diff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)5 T- s" q! ~7 Z( ?) S% m
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;9 ?) p+ F, r+ ]0 B
diff_nsfmn1=diff_nsfmn1-zero;3 Q, y* j* I' X2 c5 _1 N( C. ~
subplot(3,1,2);
7 N7 P5 ]8 T4 F( N0 F) Yplot(1:length(diff_nsfm),diff_nsfm); %绘制含小信噪比高斯白噪声已调信号的时域图
7 `2 D* \! ~& m: D( y sxlabel('时间t');( X4 u: J* w7 L8 Y% q8 q+ a6 {, ~
title('含小信噪比高斯白噪声已调信号的时域图');0 E/ c$ |- f7 L. M5 q
subplot(3,1,3); %绘制含小信噪比高斯白噪声解调信号的时域图7 `& X* K! m( U0 w: Q
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');* }! Y- K; L2 V t1 _) M% z9 m
xlabel('时间t'); 5 S; y6 h/ W! v! k9 n# O# }# @( C3 h& e
title('含小信噪比高斯白噪声解调信号的时域图');
5 M% T) P1 G5 c%*****************************************
+ r7 K, K# q7 ~/ {# Vdisp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
3 h2 F! h m7 v3 }8 V! Z6 [6 Bpause0 I, i) u& P' C0 i
%**************figure(5)******************
7 W: J: K& f3 a0 n8 gfigure(5)! |1 x2 e2 z1 b8 C6 f& B! l) g; X
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图/ F( }& k. `) Z* D; ^
xlabel('时间t');& L; o) [5 Q4 E
title('调制信号的时域图');& A. Q u/ T+ L! O% f
db1=am^2/(2*(10^(sn2/10))); %计算对应的大信噪比高斯白躁声的方差
" d8 d! e \7 ^3 Tn1=sqrt(db1)*randn(size(t)); %生成高斯白躁声
) C: \& T! H( O8 p/ }nsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通过信道传输)" c4 e2 d! y; V. j- U- j5 c
for i=1:length(t)-1 %接受信号通过微分器处理6 t$ b6 ^+ V" ~2 I
diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
5 w+ V0 J, p- _2 gend
8 Q2 [# x, {; ~& l5 Q$ P! m7 t( Zdiff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包
1 a( j2 Q( }" m4 Y: G0 U/ B4 S% %络检波)0 ]: x6 V9 O% T1 i6 Z
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;8 m! U* w) p7 X8 a6 o# k: b$ u% S
diff_nsfmn1=diff_nsfmn1-zero;
. a$ g- P5 l/ {* Asubplot(3,1,2);
/ R' {1 q, O8 c0 I2 p& H$ U, xplot(1:length(diff_nsfm1),diff_nsfm1); %绘制含大信噪比高斯白噪声已调信号
8 x! h% N" Q# X( C% %的时域图
5 W8 s9 n2 ~& U% hxlabel('时间t');! i, B; u7 g3 U5 @8 ~
title('含大信噪比高斯白噪声已调信号的时域图');
" Q6 w2 `8 h/ R) asubplot(3,1,3); %绘制含大信噪比高斯白噪声解调信号# Q; G, E8 v' p% N, f
% %的时域图
# t7 N5 Q6 W+ [0 v7 }! tplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
4 i) o+ t; d ixlabel('时间t'); ' q9 d1 U4 @+ t, [1 r* P$ q
title('含大信噪比高斯白噪声解调信号的时域图');
& ?( Z' r, F/ k$ A* R& y( w%*****************************************: ?! G4 l2 u7 B% h8 J- Y
%******************结 束*******************5 @- g% G' M/ C- C% @( O
w* ~* u r% r, C
5 s& N1 m8 z* {* f- q' @
|
zan
|