- 在线时间
- 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
" b0 C+ E/ {8 F%频率调制与解调的Matlab演示源程序
9 C9 Y- w+ O6 w6 ?- c1 B%可以任意改原调制信号函数m(t)# P; S% G9 d, F! k0 S1 |8 N
%电子信息工程 杜怀超 091308305
2 ^2 M- O* C% @, L- r%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·2 Q. u" e4 H- r
%*****************初始化****************** z) |; }( j8 s: S2 ~$ u( S
echo off
7 ~. d0 |8 s! f& Y# d. q% ?close all
5 \5 D( J j* q& X4 E- q$ {clear all: |/ E7 C; A5 q+ X/ ^1 }
clc
1 l( m; K7 i& r5 t%*****************************************/ y9 }' }) C$ [# ^7 u% D2 O& _
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·6 N- n3 g7 D. Q0 V
%****************FM调制*******************6 L- F2 K. e1 x* y
dt=0.001; %设定时间步长- i* S: [7 C/ U0 y
t=0:dt:1.5; %产生时间向量) k/ t9 @4 x0 x0 N8 Q. `
am=5; %设定调制信号幅度% c3 H# v1 L% T( @; N' ^
fm=5; %设定调制信号频率1 A2 T8 u1 G; n) r! V7 m0 Q
mt=am*cos(2*pi*fm*t); %生成调制信号
1 n! x+ @& \- ?, A5 \fc=50; %设定载波频率
! M$ r" y8 G1 j; H' vct=cos(2*pi*fc*t); %生成载波% N' v3 C+ s3 @# v: n; s% P# Q
kf=10; %设定调频指数
6 A; i4 z. c, S$ jint_mt(1)=0;
# Z: i1 V* k4 X' yfor i=1:length(t)-1 7 R! M3 E/ E, ?, x# }. G
int_mt(i+1)=int_mt(i)+mt(i)*dt; %求信号m(t)的积分% i* ~6 R3 k. B( l, Z
end %调制,产生已调信号3 z/ ?' i2 u3 j
sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt); %调制信号" d' K5 x/ V0 n/ j# q* A
%*****************************************
1 m- Y) V- _% T, H/ b6 N%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
. U* Z9 N! I6 D/ c%*************添加高斯白噪声**************
2 F, R- G) g9 O1 X8 ]% ]& ~sn1=10; %设定信躁比(小信噪比)
5 t9 j5 P: D: D: V7 msn2=30; %设定信躁比(大信噪比)+ ]. P" h% B' O4 y
sn=0; %设定信躁比(无信噪比)
# s( h5 B" k4 C$ Ddb=am^2/(2*(10^(sn/10))); %计算对应的高斯白躁声的方差
6 @ F9 w. Z6 p6 B' in=sqrt(db)*randn(size(t)); %生成高斯白躁声
: O: t, u1 W4 @2 u+ O8 R( rnsfm=n+sfm; %生成含高斯白躁声的已调信号(信号通
" S$ A: Y4 [0 Y' t# \. u%过信道传输)% J5 H# B3 Z3 `& w) U
%*****************************************
9 R2 ^4 E$ H) \% I0 q* J1 L1 t3 i6 p%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
4 @; X6 V1 I7 @) i%****************FM解调*******************& z) M9 o* O7 A6 ]
for i=1:length(t)-1 %接受信号通过微分器处理
, W7 e K8 G! a- t diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;8 ^, n4 C4 ]3 y; V0 F w* p
end) Y; [2 @# Y; F5 j( B
diff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)9 d. U% j$ u# L9 o4 t9 {% v1 v3 a
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
' m2 A. \2 }( ?- j, ?diff_nsfmn1=diff_nsfmn-zero;5 j6 u# [1 k0 T) ?4 b
%*****************************************' B: x L8 P$ n0 X/ {1 |
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·: e Q% |- Q8 }+ l6 k
%**************时域到频域转换**************( V& ?3 h# [& `9 g; h
ts=0.001; %抽样间隔
9 X+ K/ O6 S- E3 C' M* w$ tfs=1/ts; %抽样频率, k$ E2 M' W0 G* C: d
df=0.25; %所需的频率分辨率,用在求傅里叶变换. D+ h/ G# n. \; ~
% 时,它表示FFT的最小频率间隔: r* n9 G9 o9 S2 A
%*****对调制信号m(t)求傅里叶变换*****
' Q! Z8 s9 W3 d- w+ u$ G% hm=am*cos(2*pi*fm*t); %原调信号
5 Y6 H' }9 y8 t5 I+ rfs=1/ts;7 x. B {* z i
if nargin==26 J1 o- r* R% x/ f: u: T2 u$ x' \
n1=0;' |* \1 z) c) c. y
else; U6 M+ P5 R* m- A8 Z
n1=fs/df;' m. q- l4 ~3 p5 }! Y, P
end
4 F. w0 g: @! h) J8 D& gn2=length(m);' S9 K/ ~* H2 `" B
n=2^(max(nextpow2(n1),nextpow2(n2)));
0 m( `4 a; N, k/ qM=fft(m,n);( R8 e% N# V% Z& r) Q/ z, J$ H: ~
m=[m,zeros(1,n-n2)];
! m( O( p( z8 }2 R0 jdf1=fs/n; %以上程序是对调制后的信号u求傅里变换
9 r2 o' F/ ^1 u% \7 S) PM=M/fs; %缩放,便于在频铺图上整体观察
7 {/ ^# o+ A+ af=[0:df1:df1*(length(m)-1)]-fs/2; %时间向量对应的频率向量
9 }. ^9 C+ ] y/ x1 r' X! u) g! R* i0 h4 {' F
%************对已调信号u求傅里变换**********
7 {* A8 x& A) _9 ^+ Nfs=1/ts;9 M! D6 q- ]$ Z& A* T% b2 j ~ k
if nargin==2# k! J" b! S& U" S& R; q9 w. t
n1=0;
/ I) D& C! x2 f! U8 _else
7 N2 a; x" q: a2 }) H( A n1=fs/df;6 J! V* o+ V5 N( P: _
end. u8 g' M& o% H2 Q
n2=length(sfm);- l2 ?, f; d) m0 \
n=2^(max(nextpow2(n1),nextpow2(n2)));
; D* r. c( M; W: d/ j: IU=fft(sfm,n);0 s6 V' e# ^9 X u8 e
u=[sfm,zeros(1,n-n2)];- g; u8 s G' a" m5 ^6 x3 m
df1=fs/n; %以上是对已调信号u求傅里变换
5 \. k1 _1 `1 YU=U/fs; %缩放6 g- E! p# s6 |2 c5 {' q
%******************************************
- Y4 \2 |7 T" O# `1 e%*****************************************: }6 z. l( G. P5 a; q
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
* ~) d: ]( L. D) N9 d1 x/ C%***************显示程序******************2 {; u+ }4 h6 W) N ?
disp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')3 [2 h7 a, }8 f( Z- M
pause
4 N1 Y7 F/ F- Y9 {' H# b: r( c* @%**************figure(1)******************
% H3 l* D* h) @. H, k, S/ Tfigure(1)
0 B& }0 S) r7 Z; G1 c$ N% _/ Z% nsubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
# S: Z5 |% ]1 y; f6 p& ^( u5 s4 @xlabel('时间t');/ [5 v0 \9 J( V% ~; U2 c" a' W# @
title('调制信号的时域图');
+ p" n, M- h) jsubplot(3,1,2);plot(t,ct); %绘制载波的时域图8 P2 x5 r, k- @+ y
xlabel('时间t');0 D! `+ I y+ T: J- y
title('载波的时域图');2 y1 B( \! z* e, t
subplot(3,1,3);
% d" N3 A- E( K5 Qplot(t,sfm); %绘制已调信号的时域图
) E# ?3 ]4 B( t% l" A: @xlabel('时间t');
3 r- N1 U' j) I9 `7 H3 Etitle('已调信号的时域图');
$ ^: ?5 u3 w5 u/ u6 F0 e%******************************************+ P% h. z# ~' [1 }
disp('按任意键可以看到原调制信号和已调信号在频域内的图形')2 R+ P# D4 C( D9 s, s
pause# e' A1 G1 U, ] T
%************figure(2)*********************, Z7 _: U4 q; i6 e& y: z; ^2 ?
figure(2)
$ k7 i: o7 z' |% F1 Zsubplot(2,1,1)) s& r3 o9 E$ ^: X' f9 }( g
plot(f,abs(fftshift(M))) %fftshift:将FFT中的DC分量移到频谱中心' k: e" g$ M! ?% |9 s. f
xlabel('频率f')
|' e& j+ q* J! w) T: n5 ctitle('原调制信号的频谱图')
. L, F6 i& P. Z0 p* q0 @% Hsubplot(2,1,2): w( U8 b' W+ e1 v; k9 U. W) O I
plot(f,abs(fftshift(U)))
8 f( k$ ^9 c; a1 K3 T0 ]. p9 Y3 B! exlabel('频率f')
6 e& O- `/ G; g( [% i3 Dtitle('已调信号的频谱图')2 @, @5 }6 A& Q
%******************************************( \* A0 q) w3 x7 o& _; r, B0 @: p6 e
disp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')
& q# t5 v4 q5 Y7 r. {/ _% [4 P4 mpause
& m5 u2 p/ ^0 o4 a3 ?7 q%**************figure(3)******************/ d( J$ @- U7 w3 N4 L4 U
figure(3)
; }+ j+ T: h5 `# `$ g9 ?: p( m* S# ~subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图7 j% M7 a/ m8 G# u4 E2 l# e( j
xlabel('时间t');
! v3 c7 ^! P9 q0 \title('调制信号的时域图');$ V( T6 w+ ]" e6 M3 {) `3 A3 K
subplot(3,1,2);plot(t,sfm); %绘制已调信号的时域图
2 J: }& I O B' d- u7 h) B8 @xlabel('时间t');
2 c$ `' M S! y2 R' W5 A Ftitle('无噪声条件下已调信号的时域图');
" C: l) e" z U) H: n) Mnsfm=sfm;
( Z: C2 P! f" Rfor i=1:length(t)-1 %接受信号通过微分器处理0 H$ Z5 B1 d! D u* X Q; v) L$ k. g
diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
3 n h5 c5 F4 H Y3 k# Aend
# c9 U5 E6 E! l0 k ^diff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)' i( s" N- R" J$ b
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
9 t1 o' ?1 b: Z0 z4 D+ A4 H6 jdiff_nsfmn1=diff_nsfmn-zero;
\5 O& U& X+ a/ n3 f- l' ?7 F/ f% ?( vsubplot(3,1,3); %绘制无噪声条件下解调信号的时域图
/ M; l. |4 h% o* C( x4 Jplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
h0 k- \" X0 Z, z: V6 |xlabel('时间t'); 9 e0 c: n) D" f# M! }( N
title('无噪声条件下解调信号的时域图');4 F3 h0 z" l$ U( ?7 D
%****************************************** W4 I, y6 X) B& C# N9 O+ w
disp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
5 u# ^7 B+ j% {5 Wpause
5 ^! x2 A! ^. d%**************figure(4)******************; c) H' f9 S) | a4 r, B( V
figure(4)
' C& H6 R; R9 h u8 v% @subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图% B2 ?' Z ~; K
xlabel('时间t');
1 {4 l' R" s3 Z, S! v& \* [title('调制信号的时域图');
, Z) m- o6 Z- V; e7 X) j9 g+ D2 vdb1=am^2/(2*(10^(sn1/10))); %计算对应的小信噪比高斯白躁声的方差
) t( J( c) i, i0 |+ ?n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声0 B" G( W5 G! ]
nsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通; x; I# H& M2 b8 U. H* G
% %过信道传输)
! z+ ?1 t& ]( efor i=1:length(t)-1 %接受信号通过微分器处理8 |3 B1 V" D& ~1 ~/ E
diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
, Y& q# G* `- Y7 \8 X- |0 Q, Yend
2 V+ i) x" X1 u" n; Ddiff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)! o1 G' [+ e2 c, F5 Q/ L0 F
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;, g Y3 ?# \0 F9 T" q% e
diff_nsfmn1=diff_nsfmn1-zero;! M+ N. Z" ?- z
subplot(3,1,2);
: _8 _; h u( U9 Q2 vplot(1:length(diff_nsfm),diff_nsfm); %绘制含小信噪比高斯白噪声已调信号的时域图5 o: l. r/ |: B' j
xlabel('时间t');* z2 f9 v9 m' d! T! i* Q0 m
title('含小信噪比高斯白噪声已调信号的时域图');
3 V. m( k; m! d- ]3 Fsubplot(3,1,3); %绘制含小信噪比高斯白噪声解调信号的时域图$ Z4 `- f0 G' Q4 J$ V' {
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
# i1 ^5 s7 f% i5 ?xlabel('时间t');
* P1 W A, X% Z/ M+ O7 }/ Atitle('含小信噪比高斯白噪声解调信号的时域图');
0 Z; V4 k" `' B9 y$ H4 \6 Z' \%*****************************************
+ T! [9 q+ T& d" K4 M# e0 ndisp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')0 X- E7 v: _9 W; n; [& _" U
pause9 J( R" q, `: ]4 m( K
%**************figure(5)******************- T2 N2 I. V% P
figure(5)
8 K* i# M- T5 F, t" Esubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
) X, `( o# |3 z! T* bxlabel('时间t');
9 i" H3 a) ~" g8 ^$ I5 b4 f {title('调制信号的时域图');
6 h& V9 t$ E4 U2 W, F* ?, q* e4 Pdb1=am^2/(2*(10^(sn2/10))); %计算对应的大信噪比高斯白躁声的方差
* y2 W& Z/ |- O$ @n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声
1 {4 R1 q' {# O9 Q: B7 l/ m! Ensfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通过信道传输)+ A( |8 q3 S9 y3 w: a' ^! U
for i=1:length(t)-1 %接受信号通过微分器处理6 b" A+ k: q& b6 B, q
diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
* z# h8 x+ l, r' t% C4 Uend- L; I" \) @& v* X' Z* d7 d
diff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包6 Z* Y) l0 r: r8 Z3 w
% %络检波)3 c) V6 Y5 l/ c* e
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
, k- Q" {# {. L$ Bdiff_nsfmn1=diff_nsfmn1-zero;$ N. z4 |5 x F$ e+ ]7 c
subplot(3,1,2);
/ }& V: w5 x1 s3 Y* a. K; Dplot(1:length(diff_nsfm1),diff_nsfm1); %绘制含大信噪比高斯白噪声已调信号
( _/ a9 L, W8 d3 k3 O" ^% %的时域图
+ ~$ ]: I& h6 _6 |0 Exlabel('时间t');
l3 |7 }* n8 x0 @/ @" \title('含大信噪比高斯白噪声已调信号的时域图');% j: p& v* M _) C
subplot(3,1,3); %绘制含大信噪比高斯白噪声解调信号
/ Z1 ?1 l7 L4 y, J+ E0 _% %的时域图2 I8 Y$ C6 T. R$ }! E( r' U
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');- R. B% G! B3 ?1 y a# t2 @
xlabel('时间t'); * _7 u# a0 R- J; o2 _
title('含大信噪比高斯白噪声解调信号的时域图');
$ y1 ?# c5 R/ x2 ~; I/ T%*****************************************
6 R6 i5 j: K( q' w$ |0 [1 X%******************结 束*******************
2 G0 V! U! c# Y, K# y, p% `; i) J, Y. h
1 ^+ D: v: Y2 m; Y; @( t |
zan
|