- 在线时间
- 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
6 v" }3 @2 M( i9 @. i8 p( Q( W%频率调制与解调的Matlab演示源程序6 V. S) A3 L- j& j: U7 m
%可以任意改原调制信号函数m(t)
# Y! u- d! Z" R- `5 {%电子信息工程 杜怀超 091308305
: {& o, @" ~- F%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·( T+ h" v3 k2 c. u: O' C% E" X1 ]
%*****************初始化******************
/ ]3 X$ [7 l- q- vecho off
2 H+ k' ]# |1 J. y' m- K" _8 uclose all8 w% [0 K7 E p# N- n* x
clear all
3 J+ ]! F k; M5 Pclc; n' N3 a2 W: o) `; B/ y
%*****************************************6 e+ O% F6 ?$ d8 n( _: i3 o0 R
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
8 p) X' F5 \+ d% B%****************FM调制*******************
# c* F9 @* ]8 ?$ ~; m7 e8 L, Gdt=0.001; %设定时间步长, \! `$ m) Z; ~: a8 g
t=0:dt:1.5; %产生时间向量
& f/ }/ Z2 A; \6 H2 wam=5; %设定调制信号幅度: x* @3 L, z8 l; `: g$ k
fm=5; %设定调制信号频率8 K. E6 Y7 O1 q5 ]
mt=am*cos(2*pi*fm*t); %生成调制信号1 o ~; |5 I# {; }7 r; [! f2 e
fc=50; %设定载波频率
" S* h* U0 \; _ct=cos(2*pi*fc*t); %生成载波
4 E3 ^) M* K. F, k7 p Bkf=10; %设定调频指数1 C N/ M; T' T* @# z
int_mt(1)=0;" |6 d$ o) i( W+ r- N2 a! k
for i=1:length(t)-1
. i2 m/ m3 S. O# i/ y int_mt(i+1)=int_mt(i)+mt(i)*dt; %求信号m(t)的积分& i3 ?! i% q# ?9 I" `0 r
end %调制,产生已调信号% ~5 M4 B& I5 q+ `9 e) G
sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt); %调制信号
$ E- ~' S; n8 o; @% ]0 g%*****************************************7 G( g/ K$ U; D& d" s5 u% s8 r4 |
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
4 y9 J- N- c& F1 ^, A7 M%*************添加高斯白噪声**************
# w* L4 d" F; Nsn1=10; %设定信躁比(小信噪比)( x* H7 h- H( J; k6 F9 N8 s
sn2=30; %设定信躁比(大信噪比)0 x1 s. t- B- i5 P, ^4 ?. [: x
sn=0; %设定信躁比(无信噪比)
2 E! H, k! s- J% P, G7 D1 q+ Z: _db=am^2/(2*(10^(sn/10))); %计算对应的高斯白躁声的方差
% b4 }! {# s4 [8 Y$ wn=sqrt(db)*randn(size(t)); %生成高斯白躁声
/ p) i' |& W# J; ~8 G. l' G a/ Ensfm=n+sfm; %生成含高斯白躁声的已调信号(信号通
7 T' w! Y. T- D- A3 D$ H$ b' C+ s%过信道传输)
# ]" z1 a- ` v# M, Q" b%*****************************************5 `) g0 S" X; n3 `# [) S
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
$ ?' Y3 {9 T: [# f+ J7 r%****************FM解调*******************, ?: V# L' X# ?$ y3 O
for i=1:length(t)-1 %接受信号通过微分器处理
, S; @1 {- p5 y5 p- i' F diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
7 p# [8 m" r& u8 E6 i! i2 gend
# p) A, }0 U2 \2 ^( s; hdiff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波) m' s# y2 F$ n
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
( }' B# K9 B0 R% Rdiff_nsfmn1=diff_nsfmn-zero;9 \- d9 K" [9 x2 X1 W. Y0 p
%*****************************************/ A- ?8 P9 G4 _, W# A- ^& @
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·% U W6 T6 b- T3 w+ j
%**************时域到频域转换**************9 { O, G j3 [8 b# W
ts=0.001; %抽样间隔( l/ ?1 G+ f; g* [
fs=1/ts; %抽样频率
7 _: \, S3 v8 I- N' qdf=0.25; %所需的频率分辨率,用在求傅里叶变换& T, d* b7 ]4 R, K* }
% 时,它表示FFT的最小频率间隔/ ?% j! E: d6 z9 ?$ ~' t9 h7 x
%*****对调制信号m(t)求傅里叶变换*****
* j' O8 R" b5 Z& c' Sm=am*cos(2*pi*fm*t); %原调信号
( p# _; H0 k2 ]fs=1/ts;5 o3 v' L: B% m
if nargin==2
+ S! {' W" ^# f. z) @+ P4 \ n1=0;
) g' E! u" F( \ zelse7 e' B8 U3 V) [+ B
n1=fs/df;+ ~+ T- \& |* T+ i* n @4 [/ c
end& r% l3 L o5 p/ g
n2=length(m);: E5 S9 j8 ]& k3 r0 L: u
n=2^(max(nextpow2(n1),nextpow2(n2)));# t* o4 y$ s3 i ?5 ^5 k
M=fft(m,n);; D% g2 T- X; Z4 @8 |8 ^) i$ ~
m=[m,zeros(1,n-n2)];
3 _" A9 k& U+ ?3 Mdf1=fs/n; %以上程序是对调制后的信号u求傅里变换
! Y S( ] m6 A4 H( _) rM=M/fs; %缩放,便于在频铺图上整体观察
2 k# S- m/ t. \0 h! N: a: hf=[0:df1:df1*(length(m)-1)]-fs/2; %时间向量对应的频率向量
: ?9 {1 W1 b3 y3 L1 E
( _5 d" E: y& O O/ F%************对已调信号u求傅里变换**********
* A4 @# `9 i8 Q/ ]7 [fs=1/ts;' F& U3 N4 Q: q- t+ _" k
if nargin==2
l0 n* b/ @- V+ X7 J1 I n1=0;
% q* i1 Q1 A) r& C ?# telse2 G7 y7 z* A( S1 N! T7 ~
n1=fs/df;7 y9 F J, x2 V$ g" Z
end
?* j+ I |- g; N( s( R# I5 u" En2=length(sfm);
, V' J$ o. u( X/ g3 Q8 A3 Dn=2^(max(nextpow2(n1),nextpow2(n2)));
( @7 p) u n; d/ {$ U6 L; XU=fft(sfm,n);2 I: P# n w3 L8 Q
u=[sfm,zeros(1,n-n2)];: e% ` D1 h5 w j' E0 V* L/ R+ X4 }
df1=fs/n; %以上是对已调信号u求傅里变换
7 Z6 S' s) A: j/ A* s( xU=U/fs; %缩放* U% B& v4 B9 I3 o( I# V9 _
%******************************************- r& a7 \% ]; n* v2 z+ D
%*****************************************
* U' p. j% f4 u1 [$ C' P%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
( P* D5 [4 V+ C%***************显示程序******************6 U: V$ [- c8 a3 z' E5 D7 o
disp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')
p; i5 a! r# h3 I Y# R1 [pause9 q1 Z# i" V# A
%**************figure(1)******************' @3 v* {' x1 i4 H6 Q
figure(1)- w3 @% E) N6 S' Y* }; E0 S9 P' P
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图+ e# G+ L% h) \+ H# z$ R
xlabel('时间t');
+ I- W0 m- z& [2 C9 {6 A( T3 Ttitle('调制信号的时域图');
# g4 ^$ g; u- k: Ysubplot(3,1,2);plot(t,ct); %绘制载波的时域图
4 M8 ^) f! G8 bxlabel('时间t');; a6 M/ \2 x) t* m
title('载波的时域图');
% V- L2 |2 S# \/ f: S7 |$ e, t) |subplot(3,1,3); ^4 n- _8 h7 }$ \
plot(t,sfm); %绘制已调信号的时域图
' r" j3 z+ n8 Y7 D2 A: \ Hxlabel('时间t');
: U: Q; t8 r5 O3 m ?! ]- R# K: P& Atitle('已调信号的时域图');: Y1 L: z: i/ d+ r, i
%******************************************2 E; ^( O, a' T
disp('按任意键可以看到原调制信号和已调信号在频域内的图形')
4 R5 m; R5 ?# b8 ?pause
! u. p G3 i _. b. m%************figure(2)*********************
! [8 V& ~# c) e. x* g, A4 yfigure(2)
^: g o- @! m; r2 B1 j7 L* psubplot(2,1,1)
$ K H1 l3 ~: Kplot(f,abs(fftshift(M))) %fftshift:将FFT中的DC分量移到频谱中心7 { d9 A$ \/ Y" k6 p) t: o7 |2 R# Z
xlabel('频率f')
0 v; @8 X% U* a, ?7 r- j- Jtitle('原调制信号的频谱图')- Y5 a/ @9 q& N* }
subplot(2,1,2)% m u2 x8 z9 `0 R1 c1 Y
plot(f,abs(fftshift(U)))) H5 b, ?4 O! G2 v( w
xlabel('频率f')
, B J" P3 X, a7 Y6 e N& f2 ~title('已调信号的频谱图')3 m" J/ j% J2 e4 g+ C
%******************************************
* {3 M1 d6 A- X# Z8 S% J- ^; c% N& u Idisp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')
1 {- v3 Z. `* xpause0 u! o8 ^% Q! [9 W$ W7 j
%**************figure(3)******************. d: B! t( G9 P( R ^% D- ~+ U7 H1 N
figure(3)
) Y' v$ Z$ k; Ssubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
: ?" O2 r& v/ @; k' Vxlabel('时间t');
6 B/ f* i' [- |9 @2 ]* jtitle('调制信号的时域图');
+ k/ y2 r$ K ~: I- ~$ Psubplot(3,1,2);plot(t,sfm); %绘制已调信号的时域图
6 s+ e5 H5 m5 x( }' _xlabel('时间t');
( B: P1 F* M4 a8 U, xtitle('无噪声条件下已调信号的时域图');. L2 v* [; ~2 B# g6 B
nsfm=sfm; / G1 n( O( k# g7 y! R2 {9 k. e
for i=1:length(t)-1 %接受信号通过微分器处理4 F9 J0 ~' u9 y: @
diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
: O. G& `) S* Z* Kend% \- E; V$ P+ D
diff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
# M6 t: c& _: ^zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;0 P% x/ {/ l4 e! Y" S7 Q# a/ s
diff_nsfmn1=diff_nsfmn-zero;. n2 w. O- c" R5 x. T, r
subplot(3,1,3); %绘制无噪声条件下解调信号的时域图
4 z4 f6 s( A3 v1 splot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
" \/ [( p9 ]& q, O; F% q* B) Fxlabel('时间t'); , _6 E* l2 s2 ?
title('无噪声条件下解调信号的时域图');
3 |' }& L% h+ H4 H6 R* U%*****************************************1 x" R: j, Z/ D- x" d1 U
disp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')- E0 V3 N1 F n% ^1 n
pause+ c+ \4 t$ F" j% Y
%**************figure(4)******************; q: w. R4 E4 X% _$ i0 w0 d
figure(4)
& K" Z1 z" d" W1 u9 f: {# bsubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图3 f% z) q" X# o1 s
xlabel('时间t');
1 l' s$ i! x% ^title('调制信号的时域图');
$ f6 G) d; c) ? l- Bdb1=am^2/(2*(10^(sn1/10))); %计算对应的小信噪比高斯白躁声的方差
# u) h; k8 P0 c, B9 Y7 en1=sqrt(db1)*randn(size(t)); %生成高斯白躁声
% g" |' l0 a* G- ansfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通
$ H5 m( ^# o9 {) A3 H: G" f% %过信道传输). i0 r, D2 t6 t4 O
for i=1:length(t)-1 %接受信号通过微分器处理
% ?+ t/ g& Q. G/ i% h diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
: A" J$ ]4 j2 b8 I% q$ {* Dend0 E, W5 W* q0 i
diff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
+ h0 x) U% a6 |/ x+ \/ Mzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;0 ` I' ]" X( A, M- g# [
diff_nsfmn1=diff_nsfmn1-zero;
- n( U3 w! f4 A. @subplot(3,1,2);2 [, j2 V" S! N" n
plot(1:length(diff_nsfm),diff_nsfm); %绘制含小信噪比高斯白噪声已调信号的时域图
# l1 G* [9 Q/ m) lxlabel('时间t');4 Q! Q% g% y9 D2 }) m7 T
title('含小信噪比高斯白噪声已调信号的时域图');
. L" k' E) W% s; Z+ [! asubplot(3,1,3); %绘制含小信噪比高斯白噪声解调信号的时域图
( v1 \& J; K) Qplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
+ d* d/ z+ J) m x: K8 zxlabel('时间t'); 3 w$ h! p/ T @% E+ R
title('含小信噪比高斯白噪声解调信号的时域图');
5 a4 b0 e* E% p( n- R+ R6 y) q3 ` U%*****************************************+ }# C0 l% B9 F0 B F
disp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
' f5 W: ^. C& @4 ]pause
' G' B, M2 H! |; G4 u) a* `3 Y%**************figure(5)******************
) [/ i7 ~' C) R( I/ |figure(5)
+ v( d+ D) J! H. V. Psubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
/ h% N( {, }* ^xlabel('时间t');+ u) p4 G3 k* ^
title('调制信号的时域图');) J/ k4 v, p; L7 J* |- z& B
db1=am^2/(2*(10^(sn2/10))); %计算对应的大信噪比高斯白躁声的方差
: f7 r. L5 m7 B, y; O4 in1=sqrt(db1)*randn(size(t)); %生成高斯白躁声
; K5 h5 F5 z/ fnsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通过信道传输)
2 U+ s, w2 y* f' D4 F" efor i=1:length(t)-1 %接受信号通过微分器处理
5 j/ A( @2 v g3 j6 L7 f8 | diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
- P2 Q$ k* l2 n9 eend
6 T* \& W( p6 }7 ~4 O4 V6 adiff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包8 f, K6 T4 q9 S- P- x
% %络检波)
' z- `% b4 \, R: P9 B1 F& J* ?zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;, w; |6 d P; g8 o' c4 ]& f
diff_nsfmn1=diff_nsfmn1-zero;
0 F+ K9 z2 S6 |( isubplot(3,1,2);
7 {! `( h$ C4 a8 Lplot(1:length(diff_nsfm1),diff_nsfm1); %绘制含大信噪比高斯白噪声已调信号
1 E i* p N' U) `% %的时域图% o3 e" z2 { @0 P8 l
xlabel('时间t');8 o5 `2 Y- _: v8 e6 A+ b
title('含大信噪比高斯白噪声已调信号的时域图');$ v9 C, a% {5 t8 U- i* H
subplot(3,1,3); %绘制含大信噪比高斯白噪声解调信号
1 @6 T( z I& D7 D4 p6 ?% %的时域图
5 K1 ~) ]7 y& ]) m) Qplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
' ]& `4 x' M- @% `7 v' l! J9 Txlabel('时间t'); 8 X. W6 t8 }3 r' U* M
title('含大信噪比高斯白噪声解调信号的时域图');
) a# i- O# n* _8 h%*****************************************; b* G" t1 X/ _( M
%******************结 束*******************4 x! H, ^" u3 q
- i* e0 ^1 w9 J- G8 c* s+ s
: L' z+ [2 `' g6 i
|
zan
|