- 在线时间
- 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. l3 i" h5 ?( b2 d, e2 D4 W
%频率调制与解调的Matlab演示源程序/ \4 A ]' l h" M% R ]3 a
%可以任意改原调制信号函数m(t), |- u6 A" X% C* h! M
%电子信息工程 杜怀超 091308305
7 W' F6 y4 g% z. {; ?! X! c& M%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
7 k( `7 x& U8 D7 |! J: z%*****************初始化******************
6 g+ e) U" o# H; \echo off + ^2 b" h* A6 D
close all
/ o! W. Q: ]9 \# H% Vclear all
; Y9 ]2 l6 ~; ?' U* B5 {, F$ P* Kclc
1 \! Z6 D$ U8 r# D0 z3 {%*****************************************
8 A2 y2 k9 O& S! i+ |7 G: ~%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·6 ^; a4 Q7 G9 d. y/ f
%****************FM调制*******************
3 [6 Q; Y+ O+ ]. ]dt=0.001; %设定时间步长6 r8 @* b& y$ ^& a
t=0:dt:1.5; %产生时间向量
" v! P$ }3 `6 e( i' P1 N% Zam=5; %设定调制信号幅度
( \2 U5 {+ f) o% p: U5 y Ufm=5; %设定调制信号频率/ e# d( S" }$ T' T: c3 O
mt=am*cos(2*pi*fm*t); %生成调制信号1 T4 l/ P4 [! b* ^. k$ J! I! N
fc=50; %设定载波频率
$ [; T3 Q. c3 a/ `# B x4 e) K, @ct=cos(2*pi*fc*t); %生成载波
' E+ i0 j/ w% Rkf=10; %设定调频指数* ^3 M5 I7 z* X: |( K) M
int_mt(1)=0;- M/ ^5 v5 p6 o" e8 R
for i=1:length(t)-1
6 S5 S8 ~. ~* F int_mt(i+1)=int_mt(i)+mt(i)*dt; %求信号m(t)的积分
! }' B) J5 |9 S2 jend %调制,产生已调信号
( S) }. j6 q) c- a: X- C' }sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt); %调制信号4 r0 e/ q. N6 v5 {$ r
%*****************************************5 ]/ }' j- F* P0 `
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
2 K6 G: b2 E: X- i: L) a0 L; Z%*************添加高斯白噪声**************7 F5 Y8 Z: w; j+ q( r
sn1=10; %设定信躁比(小信噪比)5 W4 s. y$ ? `, E+ d" _$ r
sn2=30; %设定信躁比(大信噪比)0 f# S0 h( h+ H7 a3 z- X1 v
sn=0; %设定信躁比(无信噪比)
# X6 l6 K8 M# g8 l/ |db=am^2/(2*(10^(sn/10))); %计算对应的高斯白躁声的方差5 I8 E6 g% `- V8 Y
n=sqrt(db)*randn(size(t)); %生成高斯白躁声
' k& {- `6 C3 nnsfm=n+sfm; %生成含高斯白躁声的已调信号(信号通
1 K4 k, l7 V( N5 J+ w%过信道传输)- ^3 o0 ]% Z- d2 z5 Z- _
%*****************************************
5 y- a i0 \- c# S( `" p%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
3 Z% `- C6 ^) I: S* n7 h%****************FM解调*******************
$ R" k: p3 k1 Ffor i=1:length(t)-1 %接受信号通过微分器处理7 y; U; _. P/ v% X
diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;: V) N" a0 K) a
end
! `" n# {9 J: S+ P' j6 d" Pdiff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
; T2 t8 v3 }2 ^ Wzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
5 n( N% ^* ~3 s- o9 a6 ndiff_nsfmn1=diff_nsfmn-zero;3 b/ @8 [6 i8 H! b8 h( _! x
%*****************************************2 i7 p& X' h0 Q
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
6 a- M a( p: ?$ }: ?' @3 [%**************时域到频域转换**************; X" _8 d% o( u s
ts=0.001; %抽样间隔
V! F/ ? Y' C+ tfs=1/ts; %抽样频率
% I! g# M$ n1 T: p) P9 ^; r2 vdf=0.25; %所需的频率分辨率,用在求傅里叶变换
1 B9 R3 l/ p5 b8 u& G8 f% 时,它表示FFT的最小频率间隔2 b: P, s2 Q3 {
%*****对调制信号m(t)求傅里叶变换*****
, T+ a1 j4 x* d- `: Wm=am*cos(2*pi*fm*t); %原调信号9 _; e$ ~1 @2 Y! A+ |( P
fs=1/ts;( m0 d3 D5 e& ^& b* p, A1 U4 M
if nargin==21 @& G5 z# U V/ ^# S) Y9 M
n1=0;2 I4 z0 `# F4 z6 g
else2 b" U& ~# L% M' n/ `& k9 c5 S' G
n1=fs/df;
, p7 K* u( l% k& M! iend7 ^, d0 }( T( q( Q: G/ q
n2=length(m);; [6 l4 z. s% H# f
n=2^(max(nextpow2(n1),nextpow2(n2)));
+ B9 }% D% A, T. AM=fft(m,n);
- e, F; Z) Q* Z0 H) h( v3 Q7 Rm=[m,zeros(1,n-n2)];) U8 |* ~) R4 u% ~
df1=fs/n; %以上程序是对调制后的信号u求傅里变换; L3 J. K7 e7 w2 o* L2 ?# R
M=M/fs; %缩放,便于在频铺图上整体观察
. u( w. J) v) t9 L6 A$ z6 Tf=[0:df1:df1*(length(m)-1)]-fs/2; %时间向量对应的频率向量" q0 B( p" ~$ @. ]: `9 V
2 o: Y( O7 P; a' ^1 q
%************对已调信号u求傅里变换**********
1 r2 F U' K- ]4 h% d5 x2 O' Efs=1/ts;. ~0 h- l; x5 S6 i' U+ t
if nargin==2
7 }4 S& L- k: W4 X: f) W n1=0;
4 F# ?# |2 f+ ~3 m0 W$ h# P$ W. K! Uelse- B$ S) W# p9 r* N
n1=fs/df;- G" r0 K7 g' c5 f! |2 _$ E
end
- [: b5 r; O$ in2=length(sfm);
5 _' G! v- n# z" u4 Dn=2^(max(nextpow2(n1),nextpow2(n2)));" G/ u9 e/ r. P, y) X$ \6 A$ }7 |
U=fft(sfm,n);# w, `; q9 z4 _' F5 T
u=[sfm,zeros(1,n-n2)];
4 K- C- e# n: H% Z% U0 |3 S+ v) t" z% mdf1=fs/n; %以上是对已调信号u求傅里变换
: |* Y' H8 U& @' f) p, oU=U/fs; %缩放
/ p# g- H% W0 u2 ?6 C/ o%******************************************
2 s1 r) ~& K5 T1 R( M%*****************************************
/ f, y* e/ y( {1 p( B Q%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
# M g- e( Z. q3 X8 F) Q& P%***************显示程序******************! @1 v6 L! B' Z/ k$ c1 t: Y
disp('按任意键可以看到原调制信号、载波信号和已调信号的曲线'), b0 ~& w4 h0 L2 }
pause
. ?5 F! s' K5 e7 Q! N% o0 }%**************figure(1)******************
7 Q; I! p6 q n1 S6 `$ h$ l4 X: Jfigure(1)* u z! ?* Z. K, b5 ~5 }
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
2 l) b9 J7 I" ]xlabel('时间t');
. Q* ?, N6 k* K" ]/ Rtitle('调制信号的时域图');" P+ P Y. t4 ^1 s" I3 p% o% @4 `& L. K
subplot(3,1,2);plot(t,ct); %绘制载波的时域图
+ V) v" [% m% x. D4 t5 Axlabel('时间t');" V% s" {& X3 I3 s3 r3 `
title('载波的时域图');
5 Y: w3 m4 ~# ^# k# B5 [5 ~, \& gsubplot(3,1,3);
3 h* P6 `5 M1 V! f" N8 b* hplot(t,sfm); %绘制已调信号的时域图& N+ U. T- S7 a% y6 u( d$ k
xlabel('时间t');4 I& N3 V1 }' f( Y) d' x
title('已调信号的时域图');
! _$ f3 }/ }1 O7 |& z! w%******************************************) x1 l, w" i2 R w. k
disp('按任意键可以看到原调制信号和已调信号在频域内的图形')) l9 Y9 X/ r; k0 C% K$ i6 r
pause
, p+ b1 s$ X0 ?%************figure(2)*********************/ h! \6 a* Z5 F- \
figure(2)8 v# n s2 d2 j6 I; M
subplot(2,1,1)
; r9 i8 p5 C) v; a: \1 Zplot(f,abs(fftshift(M))) %fftshift:将FFT中的DC分量移到频谱中心
. ]0 c$ t5 i; b8 [" c' b% T8 l, dxlabel('频率f')$ p( T1 r# o0 t3 ]9 k6 n8 }
title('原调制信号的频谱图')
- k) l1 x. b' }7 J/ p! qsubplot(2,1,2)" [( x, F9 I" ?) C/ v6 J6 ~
plot(f,abs(fftshift(U)))
/ d, e! R9 p3 w. p/ yxlabel('频率f')* o- W& l2 @8 r2 K% b! }: H; y
title('已调信号的频谱图')- A9 J) ]: Q1 }4 ~9 R
%******************************************
) f' s# u- |, t( [disp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')* P5 s, j) D' g2 t _, M- p
pause
0 F* \1 J6 ]; E: v: h* L%**************figure(3)******************0 l1 G7 p+ P1 K6 n2 K3 Y
figure(3)% V9 n8 R+ P2 }2 M: }, B- r
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
7 Z3 f: ?7 i; x8 C0 `3 C2 {xlabel('时间t');5 P1 m4 j! S! x- }9 D
title('调制信号的时域图');
- P# N! m- w/ R! ]) M; X2 u asubplot(3,1,2);plot(t,sfm); %绘制已调信号的时域图
+ r! ~0 v- f3 b' h1 Vxlabel('时间t');, a' a4 w) `6 j
title('无噪声条件下已调信号的时域图');9 @, P( W9 J& R9 ?
nsfm=sfm; + t* I0 m# L5 @, x% x+ P
for i=1:length(t)-1 %接受信号通过微分器处理
& a/ }0 O8 d" ~" T$ `% F diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;1 |3 `. C/ F& O8 m
end& X1 @5 ?1 E8 {5 Y- E
diff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
* _/ v( w4 r1 B3 Kzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;+ ?4 h# K6 [: M
diff_nsfmn1=diff_nsfmn-zero;: G7 q& s) d8 c! @/ E
subplot(3,1,3); %绘制无噪声条件下解调信号的时域图* A. E. ]$ }, q' G$ H0 Q, m' }9 X; p
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
, k9 |: x* O3 M f/ ~6 p) o) rxlabel('时间t'); # R: q9 ?0 ^" R; V! n
title('无噪声条件下解调信号的时域图');
# x4 l, h- T* w+ x: R- ]%*****************************************) C% o, h* s* [% K9 O/ y9 }' }# n
disp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
2 z( X* Q# v) e5 Y. ^8 lpause
' p7 x0 a( t$ q0 [# e%**************figure(4)******************
% J' d. g) X& `. X, x( Yfigure(4)
) d, i4 S% Z- Z fsubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图" Q7 F8 g- m$ Q% V# _ ]
xlabel('时间t'); |: S; T% n3 L- ^. s
title('调制信号的时域图');
* J1 D$ ^5 \9 ?* ~% _2 P9 }db1=am^2/(2*(10^(sn1/10))); %计算对应的小信噪比高斯白躁声的方差
# M8 Z& S$ Y( T5 D3 m' s6 fn1=sqrt(db1)*randn(size(t)); %生成高斯白躁声3 }1 F. a3 e7 y7 o, q
nsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通3 Q* `0 f, j: x# i
% %过信道传输)9 N+ X* v6 M6 p5 |) f; m- ^# R2 f J: k
for i=1:length(t)-1 %接受信号通过微分器处理" h0 f; @- ` m; E
diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
5 a; D& U9 T$ e5 ?; ]+ bend, L+ a/ p6 i3 t% a) n
diff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
$ m6 S. m& N5 l' j" [7 p6 tzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;; N5 v- {8 `" C$ h0 N
diff_nsfmn1=diff_nsfmn1-zero;
, V4 D6 K: ^4 D( p& A; H6 F) osubplot(3,1,2);9 C& m/ I! J! b g( a
plot(1:length(diff_nsfm),diff_nsfm); %绘制含小信噪比高斯白噪声已调信号的时域图
! @/ i& |+ w( n9 u B3 O! wxlabel('时间t');$ s1 G9 n$ `: u% ^! r J3 ^5 |
title('含小信噪比高斯白噪声已调信号的时域图'); c8 z6 X7 F) Q* m$ j; x6 _
subplot(3,1,3); %绘制含小信噪比高斯白噪声解调信号的时域图
8 n0 Q) \4 V& ~6 G( `6 ^plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
$ ]1 i5 S" t! I; {, E9 Txlabel('时间t');
* @- Q a" a7 ?' A9 c5 z0 ctitle('含小信噪比高斯白噪声解调信号的时域图');
& \2 V) L1 @0 r4 J O j. I%*****************************************! a2 G8 u+ ]6 N7 s$ z$ ^
disp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
! w( G4 U& g# c- spause$ D" ? j) |, \8 @) r& E
%**************figure(5)******************) w1 J% M9 L4 \- q
figure(5)
4 C$ ]! @' e( W8 W# Gsubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
' U5 R$ e5 Z1 Txlabel('时间t');
: r; a& D- x. N# _title('调制信号的时域图');: k* o" ~9 Q' B9 [: z% i1 B
db1=am^2/(2*(10^(sn2/10))); %计算对应的大信噪比高斯白躁声的方差% [! U4 o3 y) p! }
n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声
. S6 c( {5 }! W* C6 ?, U" L9 ?nsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通过信道传输)
1 m# I% O$ c* m1 O/ Bfor i=1:length(t)-1 %接受信号通过微分器处理
7 H1 I5 X( c* @8 ^" t# ? diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;7 q7 d/ B& I/ H# [, i# l! i
end0 e. y4 l) u1 ]6 {% D2 R4 V
diff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包
9 C9 a! P. q8 M3 {- J( }/ E% %络检波)
' m) W) y. y5 k' ], f9 g0 Wzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;5 g2 ?6 |4 w/ o* B7 i* j7 C# M
diff_nsfmn1=diff_nsfmn1-zero;
M/ y, S7 a9 N, B. P' i2 Xsubplot(3,1,2); A, Y$ s( M$ [( P" s7 ^1 O/ N
plot(1:length(diff_nsfm1),diff_nsfm1); %绘制含大信噪比高斯白噪声已调信号* y0 m; o' g+ H: W5 W, ?1 |8 s! `
% %的时域图
: x: j v6 F s& a, b! Nxlabel('时间t');
/ B* ~# C' g7 u! c9 ntitle('含大信噪比高斯白噪声已调信号的时域图');" U& t- v# w2 n. w- J( s9 V
subplot(3,1,3); %绘制含大信噪比高斯白噪声解调信号% `- {* B2 \, [
% %的时域图
8 D7 O7 Z9 t( n1 b8 e B( m) G; A i6 [plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');3 C' \# J R& }' p0 c
xlabel('时间t'); ( S! p; V- [, k& r% Y9 P# @
title('含大信噪比高斯白噪声解调信号的时域图');
" a% V5 h {7 ?, P: }%*****************************************. t7 I) F# T. F- u4 \& I3 f f# y! Y/ v
%******************结 束*******************$ S: J0 C! @, R/ e) Q2 [* U
' l" ^' k. t0 D$ e2 D' s- g
5 j5 F/ c8 X. \ |
zan
|