- 在线时间
- 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
8 R, l* F% }- C% ?3 Q%频率调制与解调的Matlab演示源程序% m: F7 k$ V* h( N1 `* ^5 v
%可以任意改原调制信号函数m(t)
$ _9 f$ Q) ?2 T+ h%电子信息工程 杜怀超 091308305
0 p& E0 m# K- z# b0 ^) r%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
) l; Q! L" v9 ^3 n" ]& S; P%*****************初始化******************+ t/ U6 Q9 a7 \2 ^
echo off ( C. O6 s5 T3 p& D
close all f/ q" }9 l- N% }* }7 \ Y
clear all
0 C; |8 R/ r* Y* J5 ~" iclc
+ A. J' ~' u: p2 V0 _%*****************************************
" j4 k- H4 a# x; q* c%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·- n8 u5 p0 |3 l& p& B
%****************FM调制*******************
1 d9 o4 t/ t; X- Xdt=0.001; %设定时间步长6 S, i2 u4 J+ g) t2 ^: `
t=0:dt:1.5; %产生时间向量& G4 t- B6 Y, [
am=5; %设定调制信号幅度6 e) Z) R6 }( c% y5 N: h
fm=5; %设定调制信号频率
1 N1 s1 M* U, b% |mt=am*cos(2*pi*fm*t); %生成调制信号! j2 T$ W5 v7 i* g; O2 z
fc=50; %设定载波频率
8 _+ E0 T! {: Zct=cos(2*pi*fc*t); %生成载波2 b# Q5 U" ~" u: \4 H
kf=10; %设定调频指数
3 F% O& u) s! ]$ ~int_mt(1)=0;! a9 b, P( O6 }' O; ~; d3 V9 h
for i=1:length(t)-1
) _4 ?0 {5 B. U& D/ z8 c6 S int_mt(i+1)=int_mt(i)+mt(i)*dt; %求信号m(t)的积分
: l( |! h) E7 send %调制,产生已调信号
+ g/ Q$ b& n+ ]1 e- F( Rsfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt); %调制信号
* q% |- R2 ]. x" m. A2 R9 [( d2 e%*****************************************' s) _$ x) |' z$ J
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·5 x$ f1 Z; l1 E% a' v, r
%*************添加高斯白噪声**************" l5 _ @! x3 T' x
sn1=10; %设定信躁比(小信噪比)
3 t2 D- i, a+ K5 k( \: Ksn2=30; %设定信躁比(大信噪比)
3 [5 x; G$ \" H( {, G- y A8 R+ Dsn=0; %设定信躁比(无信噪比)
# x7 h4 Q, Q8 @, f3 a+ X1 H. U, Fdb=am^2/(2*(10^(sn/10))); %计算对应的高斯白躁声的方差
; o |- u6 k! z8 n& Z" Bn=sqrt(db)*randn(size(t)); %生成高斯白躁声
$ R0 Q) L; D* D3 Ansfm=n+sfm; %生成含高斯白躁声的已调信号(信号通' l8 \) i- E8 e; s2 _( |8 S' u, J
%过信道传输)
1 \) Q2 }- ]9 E%*****************************************
; H0 N% Q, @/ O$ L' p( i%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
7 `3 m H' \2 C8 U9 _%****************FM解调*******************8 R9 k) [1 n# b/ R9 m
for i=1:length(t)-1 %接受信号通过微分器处理
) O/ s% A( m% @. E diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
) N1 L6 \9 _9 H( Yend9 C# k6 e! t2 z3 I
diff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)$ Q) w+ @3 K' C0 V: A- p
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;: j0 E. O7 Y6 E. ?# v
diff_nsfmn1=diff_nsfmn-zero;, @2 q9 O+ \6 @0 a
%*****************************************
" m' d% T9 Q! q! y) Q9 C%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
2 w+ X& G9 G. e3 y%**************时域到频域转换**************, e/ m5 X) V8 G# Z( M: B$ h
ts=0.001; %抽样间隔
8 f2 m$ }' m/ n) `) L, ^; E& j: q0 cfs=1/ts; %抽样频率9 O: J8 T5 J- T/ l+ m+ y
df=0.25; %所需的频率分辨率,用在求傅里叶变换
5 A7 `. p! w9 B. Y. V" G. L8 S5 \% 时,它表示FFT的最小频率间隔) y/ H5 d8 `/ f' Z0 R5 e7 t5 Z2 W
%*****对调制信号m(t)求傅里叶变换*****
* i D% `5 @" N6 I" ~0 Gm=am*cos(2*pi*fm*t); %原调信号
0 L, s0 w3 c; O6 kfs=1/ts;+ L: N6 k( \' f/ O/ c4 A4 z
if nargin==20 A( ?( t, m) y, g" }
n1=0;
0 q0 ~' l" H$ W3 t5 R1 `else
0 G3 F9 W) D& u" o/ ~ n1=fs/df;# _( r9 n6 O9 L8 _3 ]: t( s! v
end) @: A$ W% d+ f+ A, N1 O
n2=length(m);1 m/ j9 y! R+ \
n=2^(max(nextpow2(n1),nextpow2(n2)));
9 o0 y' }$ A3 g: r7 d# X$ tM=fft(m,n);
1 q' o0 E& v9 b4 ?m=[m,zeros(1,n-n2)];
6 M- ?) g* J' r2 Q0 {0 M. a5 w: jdf1=fs/n; %以上程序是对调制后的信号u求傅里变换
0 E, H7 x* D$ eM=M/fs; %缩放,便于在频铺图上整体观察2 O x: ?- J; ]8 q( Y, b4 J
f=[0:df1:df1*(length(m)-1)]-fs/2; %时间向量对应的频率向量
4 U7 P* u) e" f5 D
) q+ @7 k) }% P7 M: Q. X) t% r%************对已调信号u求傅里变换**********
; R! T4 i2 ~" m! ^fs=1/ts;
7 h: E6 t" t; e( a* J3 K3 t$ w5 w8 zif nargin==2
8 h( {( F/ S. Y+ B2 B2 u, F n1=0;# K+ g/ {- z' T% O) E: J0 a6 z. _
else/ ?7 S3 H* s. r# ^5 w4 H8 E
n1=fs/df;
" e: d) D, |2 F( X4 c, F) Xend
3 X0 \) P1 w7 M/ K3 j, dn2=length(sfm);
% O. b: l: R% k0 ^/ f% H! pn=2^(max(nextpow2(n1),nextpow2(n2)));
: g9 ^ e9 E8 @7 B2 MU=fft(sfm,n);
" o% U+ s8 Z) Uu=[sfm,zeros(1,n-n2)];
! x6 c% |3 I- S7 u6 h+ w1 Tdf1=fs/n; %以上是对已调信号u求傅里变换1 S# l8 V% [. b( n9 t/ m) Z, O+ i
U=U/fs; %缩放
3 g7 {7 m; M6 y- h( m%******************************************
8 K' H7 f k' F4 Z% D6 Z! ]0 I+ b%*****************************************
" n5 y3 i9 Q. }3 |. b$ M%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·5 E* P9 U& `! }. L4 a9 Z9 |: x
%***************显示程序******************
K& @' O, G- w1 n* G. L5 i$ X( Y! Idisp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')
4 b0 f4 Z. Q, M6 ]0 M% Spause
0 ^$ S4 z9 ^5 W" E5 B( e%**************figure(1)******************. _. F+ V& o+ K' m7 U# K
figure(1)
7 X# @) x6 ?. [$ I# ~/ {subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图 _/ d( r4 z. `4 F7 @8 E$ r
xlabel('时间t');
8 X, D) q8 g& Y; otitle('调制信号的时域图');
; ]/ f: E5 { D' vsubplot(3,1,2);plot(t,ct); %绘制载波的时域图
: K l+ l3 ]. `; z" J1 v+ m8 b! c3 Lxlabel('时间t');
" Z) Y( i: R) b Q" ]title('载波的时域图');8 N$ x- ~& x/ N: f( t
subplot(3,1,3);
0 O( m- q. I# S9 ?: o' a8 y2 A- s0 U7 zplot(t,sfm); %绘制已调信号的时域图
2 x% c/ `, S+ Dxlabel('时间t');5 J* Z! Z6 R+ x! m. ^
title('已调信号的时域图');
( W6 `2 [' w. a; D%******************************************) `# C4 H& E$ r
disp('按任意键可以看到原调制信号和已调信号在频域内的图形')
o3 z* L" y& N- Y4 Ppause; \; z. l9 E4 L" G% Y c* `2 J
%************figure(2)*********************; ^" |; ]; n' V6 `1 j E! f
figure(2)/ e1 ~7 _: U' x* I l' f
subplot(2,1,1)
% l' U! a* O) T. v: tplot(f,abs(fftshift(M))) %fftshift:将FFT中的DC分量移到频谱中心
+ }; D% ~& |9 s) I$ I6 v0 Oxlabel('频率f')3 L' U; J1 G# Y
title('原调制信号的频谱图')- [6 y; q9 `$ D1 b* k
subplot(2,1,2)
( Y& @3 o. q+ \( |6 A) Iplot(f,abs(fftshift(U)))
3 [6 \/ k5 ^6 hxlabel('频率f')
4 G* {3 o W" |2 v1 [title('已调信号的频谱图'), o3 N R1 J/ F. f4 T9 w
%******************************************
4 B6 D, A6 j+ }disp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')4 P. Z$ S2 B7 i$ F: ^
pause
& y& s) ^+ c) l8 h7 S# j%**************figure(3)******************, a. A7 G# J |' g r
figure(3)' Q3 q# X0 E8 |# G4 b2 C
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
9 n7 K* ?; v; B9 n# e0 {/ V- w( wxlabel('时间t'); |% x4 m1 C, P+ Z# e1 {, ]
title('调制信号的时域图');# k) `- Q9 v% ~& a$ Q8 P9 P
subplot(3,1,2);plot(t,sfm); %绘制已调信号的时域图, R6 o0 |$ f9 E# h# p, t$ ]+ y
xlabel('时间t');
2 h1 T$ K' Y- M* v6 b% xtitle('无噪声条件下已调信号的时域图');6 v7 t$ v0 |4 e9 g i& R
nsfm=sfm; 8 N% h1 Q7 t" y9 s; J
for i=1:length(t)-1 %接受信号通过微分器处理
! {+ E# u! J, q6 @+ k diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt; i7 y, |. q8 o2 Z0 G
end
$ P" Q" R O2 }* y2 Bdiff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波) W# V! L& H* \& I/ ~
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;& p* O2 Z/ ?$ N9 w) C# a; [
diff_nsfmn1=diff_nsfmn-zero;) [! }7 y Z: c% J( q, q( J' g* T
subplot(3,1,3); %绘制无噪声条件下解调信号的时域图
/ l8 O2 n: z& ?1 m6 jplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
, A4 |. K5 K$ Y) h# U! axlabel('时间t'); 3 d$ D9 k- e& i! g
title('无噪声条件下解调信号的时域图');
6 j3 M- q4 G p! s7 B%*****************************************; e- W) L. p4 M' M# O- ?; d
disp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
. m( \. g* i8 C. c# @- m3 i" dpause
. w! i2 T5 ]5 s, U& o%**************figure(4)******************+ I6 u; c5 {4 v7 @, g
figure(4)
" V4 ~4 ]7 p" o j4 C$ \subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图$ D* y5 F @. W: ~* r
xlabel('时间t');) l( e6 D$ p5 ]
title('调制信号的时域图'); W& T$ C7 \3 W& N
db1=am^2/(2*(10^(sn1/10))); %计算对应的小信噪比高斯白躁声的方差
/ L. `4 l$ n; `/ U$ x0 u4 mn1=sqrt(db1)*randn(size(t)); %生成高斯白躁声
: H x/ Q; U- X" {+ o6 R& Xnsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通
& w( Z; G9 d0 F: R- A; T4 K7 H' z; d% %过信道传输)5 U" J7 ~' O& t. b! d- {
for i=1:length(t)-1 %接受信号通过微分器处理
' I' Z' H" }4 Z5 C' g! p( V* | diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
" d: a% i+ {6 f/ @/ s- bend6 v$ ^- d$ o9 Y- V+ ~
diff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
1 m" s8 ~% f8 d- r5 f, g, T8 E* qzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;4 w" |3 @3 H& R) m9 P' M$ A
diff_nsfmn1=diff_nsfmn1-zero;
" R3 N: s- r0 osubplot(3,1,2);
S- M: X' \' f* hplot(1:length(diff_nsfm),diff_nsfm); %绘制含小信噪比高斯白噪声已调信号的时域图, @* l0 [; o) h! \& B$ l
xlabel('时间t'); I# l4 @, Q T* M" h; S+ _
title('含小信噪比高斯白噪声已调信号的时域图');: U5 Z8 u# Y4 x2 R" f! G1 W5 Q
subplot(3,1,3); %绘制含小信噪比高斯白噪声解调信号的时域图
5 G4 Z8 Z( ], `. m9 ]plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
4 f5 X9 K: K/ ]2 L3 `$ Y qxlabel('时间t');
/ f9 U8 w+ _) Ctitle('含小信噪比高斯白噪声解调信号的时域图');
3 j* m0 \" X: D0 A! i+ y1 d%*****************************************+ E+ B! g$ r* ?( f- h
disp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
/ Q# |0 ?* u( Qpause. f0 s6 Z# l" I- V3 S0 v% F
%**************figure(5)******************9 y' ]- K8 Q# r5 c2 W! N' O% a
figure(5)
5 w; F1 Z% w5 y: o5 `, {3 K& qsubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图& K( I' ?# w) y. A7 ]! \' _) s0 p
xlabel('时间t');' s3 P$ ]+ e; c9 V# S
title('调制信号的时域图');' o& W- R" s( r0 o4 K H
db1=am^2/(2*(10^(sn2/10))); %计算对应的大信噪比高斯白躁声的方差; R9 B1 ]1 q& `" y
n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声& }2 _' j" e+ v' B* B
nsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通过信道传输)
/ A) J) o" O7 [8 t5 Y/ @ U; wfor i=1:length(t)-1 %接受信号通过微分器处理; L* y; z# R- e4 _# B% @/ _# M
diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
+ R* M" e# y- n# T# H& nend* Y# ^9 X0 O. F. }
diff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包! ~ ^+ \. `$ L( T; s! G
% %络检波)
, Q: E& }4 {3 H# p! n( G5 Hzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;7 f) n* }! s7 h$ K6 p/ q
diff_nsfmn1=diff_nsfmn1-zero;
. \' c6 o. x; s M9 gsubplot(3,1,2);4 V$ q# }; q* y4 i0 G: j
plot(1:length(diff_nsfm1),diff_nsfm1); %绘制含大信噪比高斯白噪声已调信号- \3 F. u/ }5 q; A3 z' v
% %的时域图3 G& Q' `; ?( f7 Q9 j5 k% V4 l
xlabel('时间t');
% l$ A$ v( Q2 [+ _title('含大信噪比高斯白噪声已调信号的时域图');: O" f. ~2 I" l% T$ T! G: y. v
subplot(3,1,3); %绘制含大信噪比高斯白噪声解调信号: o$ M' T. L. P# }( E# j1 Y
% %的时域图6 t4 |+ |' k/ t; b
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
' u# B* H0 N: Y, Dxlabel('时间t'); " D" Z) ~. b7 ^+ l+ T
title('含大信噪比高斯白噪声解调信号的时域图');& a7 l3 ]$ ]$ _3 r1 C2 ]
%*****************************************9 ?4 r3 H6 h7 W! D9 Q
%******************结 束*******************
# d. l6 @/ _0 {' A* c+ H5 }
" a3 ]: R8 k3 S; x6 h6 |3 d( }/ m3 m
2 V k# F P' d$ z# i2 p7 P; W2 g |
zan
|