- 在线时间
- 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
& A- y4 K5 |8 G4 I) k( k%频率调制与解调的Matlab演示源程序
) N" x& M. ?: O- n, i4 D%可以任意改原调制信号函数m(t)
3 U( f4 {" e# I0 \%电子信息工程 杜怀超 091308305
r+ q; r3 V, f: ~, J%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
( N& ]! U# h2 U' C9 p8 {' i%*****************初始化******************
0 H# X/ V3 X$ Z. u3 Aecho off 1 N" R n* x7 Z
close all* Q+ \. q+ D* M) ]" t
clear all% E% J2 m y) T
clc q/ R# I. a. i1 T) \
%*****************************************% X4 R: g9 u4 Q# i& S$ u
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
3 R# S+ U5 E5 w% X4 T' f' r%****************FM调制*******************9 {- ~% U' G7 Z" b/ P
dt=0.001; %设定时间步长! o2 E* v4 p/ m0 ~; X
t=0:dt:1.5; %产生时间向量
3 ^2 L" t8 F7 W) ?, }& dam=5; %设定调制信号幅度3 O3 a9 T: z2 n, r
fm=5; %设定调制信号频率
: z) ]0 c+ T. M8 i2 O$ bmt=am*cos(2*pi*fm*t); %生成调制信号
% w+ Z9 Q' `4 E# p4 v }% yfc=50; %设定载波频率
0 m1 O' c9 [; ict=cos(2*pi*fc*t); %生成载波
* m! e1 j7 L3 d' \5 Dkf=10; %设定调频指数
W$ a( S' J! I" I& J1 _6 ~" U3 H6 Cint_mt(1)=0;0 `1 R8 p N. A, h6 a6 F' H8 Z
for i=1:length(t)-1
; c0 b R$ g! f. v1 o int_mt(i+1)=int_mt(i)+mt(i)*dt; %求信号m(t)的积分
+ n! W/ @! g8 V' L. z0 \+ }4 @end %调制,产生已调信号5 i, @; M. d Y. [8 j2 E" m/ }
sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt); %调制信号
1 S' b6 \2 a: t9 X, }%*****************************************
; }& e; d- z0 u3 A; u* C%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
4 }; n) R# w, v%*************添加高斯白噪声**************
( o0 M: @! p5 Zsn1=10; %设定信躁比(小信噪比)% x; P; ~) ?( I
sn2=30; %设定信躁比(大信噪比)
4 i" |% F5 w. Jsn=0; %设定信躁比(无信噪比)
2 x% w( l, z: Hdb=am^2/(2*(10^(sn/10))); %计算对应的高斯白躁声的方差
1 e' ]/ z) H6 j* Tn=sqrt(db)*randn(size(t)); %生成高斯白躁声
3 k8 ^, B0 P% s7 E Dnsfm=n+sfm; %生成含高斯白躁声的已调信号(信号通
3 ?4 y% M' S6 B% r%过信道传输): H/ Y) Y2 |% S" W, `
%*****************************************
) k8 O5 d" n- b$ A6 G+ N5 a) G%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·* [# u# v1 y f) N
%****************FM解调*******************
4 A7 M8 g6 [: |- xfor i=1:length(t)-1 %接受信号通过微分器处理1 K0 c6 w- A7 S6 ^) J
diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
5 h% `- P. T, g& k5 r, n* @end
8 h2 P5 ^6 X1 z7 Gdiff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)5 X" V+ A6 W$ a7 {9 U
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;9 c- t) b+ `2 y
diff_nsfmn1=diff_nsfmn-zero;7 w1 l8 v! b+ B6 E/ s8 n
%*****************************************
8 `* F: M) V3 O9 V0 Y4 a5 Y% T%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
! g4 }1 E. a, f/ U%**************时域到频域转换**************
% c) j8 c' j6 `, Vts=0.001; %抽样间隔! r: H1 X( U+ I
fs=1/ts; %抽样频率
+ g# S# P L% O+ @3 Rdf=0.25; %所需的频率分辨率,用在求傅里叶变换
7 t! b' m1 V% e4 O3 R' R% 时,它表示FFT的最小频率间隔
5 l1 d7 v2 S# K, p%*****对调制信号m(t)求傅里叶变换*****7 y8 S3 D! ^/ S+ S5 U# `: Y* g
m=am*cos(2*pi*fm*t); %原调信号
( D% j) q! n$ Y Qfs=1/ts;
- r% I3 |+ h2 M% T8 i" @- nif nargin==2
" c) f$ @0 `0 P& F n1=0;
) |, O5 @! O; i, o6 E( K: m6 oelse2 F4 n* f! [6 x
n1=fs/df;3 b1 c* j7 ]# W, G: p/ ?
end
& l9 R. ?7 d( Y" _1 `; gn2=length(m);% s6 `( G0 @8 Q$ r( C) w9 ?
n=2^(max(nextpow2(n1),nextpow2(n2)));' f( ?7 ?& U) G$ \. S
M=fft(m,n);
( O+ t/ \1 C0 J. e4 v' Hm=[m,zeros(1,n-n2)];/ Z9 p+ d3 l( h' `' v% a# ]
df1=fs/n; %以上程序是对调制后的信号u求傅里变换
( i2 m% o6 {& Q1 UM=M/fs; %缩放,便于在频铺图上整体观察
2 |$ G6 z9 e" G9 m% a. ]f=[0:df1:df1*(length(m)-1)]-fs/2; %时间向量对应的频率向量
/ C3 x% l0 p" G# ~" J9 _( H5 ]/ J1 d
%************对已调信号u求傅里变换**********
2 [, M5 `" e6 ^8 u7 z) tfs=1/ts;
% R9 U! `- C9 W) [# `' Gif nargin==2
+ e# \7 p4 z& D- w* S- B9 V+ k; o n1=0;' d( t4 ^7 Q+ s' |* P* w3 e
else( \8 F2 h8 |1 U9 e2 k1 f4 _
n1=fs/df;
2 N; ` U0 `7 U+ z/ f7 B$ B) J- Kend" K' `0 c; t' t) w% ]/ Z
n2=length(sfm);
9 X B9 r' l- A; P6 y sn=2^(max(nextpow2(n1),nextpow2(n2)));+ W9 S. i- z5 ~
U=fft(sfm,n);
: i1 b+ {; g8 h+ @7 qu=[sfm,zeros(1,n-n2)];9 @2 O5 ? H. V% |
df1=fs/n; %以上是对已调信号u求傅里变换
/ _8 v' M( [3 v; T; f+ NU=U/fs; %缩放 q) K' N% [1 R, I
%******************************************
9 o7 t Z/ g2 e `* t& \%*****************************************% a/ ?" d+ t% _) |! k6 {8 n
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
p8 p% L, Q, s3 w%***************显示程序******************
7 r4 b0 }+ Z$ O4 `! J% ^' s6 ^% R2 jdisp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')
& A4 g% w/ f1 mpause
- e; d# A" G0 Z. V/ h9 o%**************figure(1)******************
F8 m* ~& {1 z' ^5 u( sfigure(1)
( c: }7 i4 Y1 v8 r& Ysubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图2 {* U' G/ m4 r' R( c" Z" P
xlabel('时间t');
2 v1 C9 c4 g8 b& R$ {( a2 ctitle('调制信号的时域图');, D; U" I/ k; N
subplot(3,1,2);plot(t,ct); %绘制载波的时域图
1 y5 R5 Y8 t# B' { Yxlabel('时间t');
8 v# S" {9 I. v9 d7 Etitle('载波的时域图');
0 C* t3 h& ^! \) _subplot(3,1,3);* I6 c" K f. X) X: Y
plot(t,sfm); %绘制已调信号的时域图
" u; |, ]. z& g+ y0 [) r2 G$ Pxlabel('时间t');
( h/ c; h1 p( B% {# F" S6 ^title('已调信号的时域图');
& _7 o- I w+ ^' w5 U" h: n4 W+ Z! ]%******************************************
" i7 I. `/ G# ]: ~# n2 E& udisp('按任意键可以看到原调制信号和已调信号在频域内的图形')6 M( i. @" F7 B B* ?
pause
* `8 r+ E; X+ [$ d( @3 S2 k%************figure(2)*********************5 i2 Y# k" V& J: P! c+ c; ^9 s
figure(2), d& W; f; Z( F2 R3 k% [* c4 X% v
subplot(2,1,1)
) r. {' Q! @+ n3 B; ^. k( c' O; \plot(f,abs(fftshift(M))) %fftshift:将FFT中的DC分量移到频谱中心
0 w0 S5 D& @" |( V6 @xlabel('频率f')$ s- a" t* q# W! k1 R# J/ m
title('原调制信号的频谱图')
2 g; H* e: u; Y# d! W" i' z9 Bsubplot(2,1,2)
# u- w4 I" z1 |1 m: `- J; bplot(f,abs(fftshift(U)))6 i+ ]- g# M& h( `: k- _% J; e v. @& }
xlabel('频率f')1 v- P7 p0 `4 T2 R0 S0 ]# h5 t
title('已调信号的频谱图')+ i* L t8 a. \2 G: e' b
%******************************************
4 R2 K0 H) T q' D8 ^disp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')
! V7 i! _9 e/ @( J$ J, \! Gpause
8 y0 N! j9 ?5 P+ }8 a%**************figure(3)******************
- P; v5 |$ U6 E! Ofigure(3)
0 m$ s8 G* Q$ S8 Nsubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
/ x2 b# ?3 E5 h! Yxlabel('时间t');
1 k1 u. S6 ^, b2 u# Z0 Etitle('调制信号的时域图');% n, `9 b @$ }8 W8 K6 M
subplot(3,1,2);plot(t,sfm); %绘制已调信号的时域图9 L+ m& U' l0 q9 z. w
xlabel('时间t');) K% k8 q9 v- Q5 n
title('无噪声条件下已调信号的时域图');* ~1 N" |: M% Z
nsfm=sfm; & X4 v( b# c' \% m! s- B
for i=1:length(t)-1 %接受信号通过微分器处理
8 B6 ~' Q2 S; ]6 F diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
) M+ T/ ?7 z, h3 s% \0 B4 Q0 Jend
6 J6 \) T' {7 o' gdiff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)/ D0 c4 @) ~( `% D: n# w
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;0 k( I. w) i+ Q% X% R+ R
diff_nsfmn1=diff_nsfmn-zero;4 y" n% |3 I7 z+ D& t
subplot(3,1,3); %绘制无噪声条件下解调信号的时域图# ~* h5 s& g# w0 D
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
, u4 G* H a6 V: }xlabel('时间t');
; k: f) M( q( i3 b1 u; ~8 i' ]' Gtitle('无噪声条件下解调信号的时域图');
1 F+ u/ Y% o* g7 J%*****************************************
( r3 F5 n: E/ E' Zdisp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')9 T: @- ~& s" V1 J
pause
2 Z" D" f- t8 H* l- b& |%**************figure(4)******************
; J: A7 _3 c- A+ d) Q! J. vfigure(4)
9 z2 y2 j" ]6 Q7 K. Qsubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图0 O# R9 n* G! i& q7 c
xlabel('时间t');
y/ \; s! q! ^ O+ u3 Ltitle('调制信号的时域图');
2 Y9 D7 k* c; _/ M' M% Sdb1=am^2/(2*(10^(sn1/10))); %计算对应的小信噪比高斯白躁声的方差2 x+ S6 ?& ]- Y$ U+ R- V% }
n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声
' l( n" g3 c: c4 h5 g) \ @nsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通
% Q3 }$ j5 \- M7 C7 {% %过信道传输)' S p' \: F7 T7 I$ }
for i=1:length(t)-1 %接受信号通过微分器处理
5 H5 v) `( M* x1 N" Y1 O diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
2 I/ C- w0 H, T0 ^/ _3 ]9 m6 ]end
' y7 ?$ `# ?9 W/ m1 \6 s1 ?! w/ Zdiff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)3 f$ t) A2 G! z0 y
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
9 I8 ]5 [( @5 Y8 [5 qdiff_nsfmn1=diff_nsfmn1-zero;
1 f: B1 y& _4 X9 p9 Wsubplot(3,1,2);
6 D9 Z( p4 B4 |6 K4 y. mplot(1:length(diff_nsfm),diff_nsfm); %绘制含小信噪比高斯白噪声已调信号的时域图7 P6 y% H7 r# h& r; y3 C
xlabel('时间t');
9 B% C6 [ _$ g9 n# ?$ ytitle('含小信噪比高斯白噪声已调信号的时域图');
& m* Y K9 R0 isubplot(3,1,3); %绘制含小信噪比高斯白噪声解调信号的时域图. I4 Q6 E2 |/ {2 S6 R
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');( x& b. {# |7 w5 S9 e2 a
xlabel('时间t');
5 t4 `! ^% r* B/ C3 `title('含小信噪比高斯白噪声解调信号的时域图');) K% F0 u) N' E
%*****************************************- y- b# M( L8 \4 Y- e9 n& C9 l
disp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
; M) l8 g: l. E: o6 N1 P# opause
+ G8 ]' j" W1 P" Y5 ^7 w%**************figure(5)******************3 _; N% i" ~ s& J) ?- b
figure(5)
0 c9 A% f) s1 Rsubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
* N( O/ M" ^0 A7 w* gxlabel('时间t');6 ^. D" k4 R7 M, }2 N
title('调制信号的时域图');$ L' D$ k' R9 [* N) X" U3 @/ G' W
db1=am^2/(2*(10^(sn2/10))); %计算对应的大信噪比高斯白躁声的方差- {4 F+ ~( y9 Z) p/ @
n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声
& o; q9 @7 s' I7 x" h8 w8 mnsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通过信道传输)+ c# J4 p& T- U, @
for i=1:length(t)-1 %接受信号通过微分器处理
3 W3 C9 O1 ?/ U- R$ w/ b diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
4 d5 ^* \) r: aend
# x. W" i F! _: {) {) L5 ?0 Idiff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包
% F. t; e: B. D! I. w$ P% R% %络检波)
1 J3 i* `$ a* R! _/ Y& L! L2 N& y1 czero=(max(diff_nsfmn)-min(diff_nsfmn))/2;# e* l9 `6 B" g u5 @
diff_nsfmn1=diff_nsfmn1-zero;
l! J! t# \! \6 Q+ M9 M! Wsubplot(3,1,2);
' @' q; G2 s$ J$ w3 l& Uplot(1:length(diff_nsfm1),diff_nsfm1); %绘制含大信噪比高斯白噪声已调信号
1 t3 {0 O! X& x9 k1 [0 f% %的时域图
* `3 v9 t/ H! b! X0 _& ]4 xxlabel('时间t');
; ]* L: c3 }3 d+ D% ^& B" L0 t0 N7 _title('含大信噪比高斯白噪声已调信号的时域图');
, A' I2 M7 o; N% H( psubplot(3,1,3); %绘制含大信噪比高斯白噪声解调信号
8 G3 \$ q( q! Y" q% %的时域图
. H* C6 \% ~' n2 H( Vplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');9 Y3 o/ y7 P" D* }
xlabel('时间t'); & Q0 c* n! u2 D- e5 v s4 T/ Z
title('含大信噪比高斯白噪声解调信号的时域图');
& b" @) `, f! t9 v%*****************************************( {: C- H0 p: p; ^' U
%******************结 束******************* F0 K& ~: R5 ]! l6 p J) _8 ^9 V
/ C+ N) b. k2 F0 {9 w1 Q& ^9 l8 N1 h+ T# A
|
zan
|