- 在线时间
- 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
( ^3 ^7 d2 |. E: E2 |+ S7 n%频率调制与解调的Matlab演示源程序0 z6 H1 ~! b# u2 W$ I- r+ e
%可以任意改原调制信号函数m(t)9 g3 Z. ~' v h1 y/ v- \
%电子信息工程 杜怀超 091308305
! l( n2 E/ b3 m: g }%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
: N) _: l6 P/ \1 o5 m%*****************初始化******************9 S# R! g* ?( r4 Q/ g: o+ w
echo off
' j$ o+ P! k: q8 \close all
1 r. F$ r- {& p# e* dclear all+ J1 G" u; T+ J5 Z
clc8 u% u) I' y8 H8 |6 u' p+ U
%*****************************************
0 U T6 G& v! v0 _+ x- D0 `%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·) A/ v' j* d% m$ q
%****************FM调制*******************
# ]; X$ n9 z3 G0 L+ [2 \& qdt=0.001; %设定时间步长
# f) y" d* r2 {9 Jt=0:dt:1.5; %产生时间向量! D" |" ^" U; ]" c7 u& C4 q1 b
am=5; %设定调制信号幅度
; u5 z1 {- ^: x: ~) s" L" T, Q+ _5 Rfm=5; %设定调制信号频率 G u, b5 g' m0 N! C
mt=am*cos(2*pi*fm*t); %生成调制信号" U2 B0 C- S% G- F' Q% D+ @
fc=50; %设定载波频率4 _7 C+ H! Y+ S1 G8 T2 M
ct=cos(2*pi*fc*t); %生成载波
+ v( f, q" ?. Ukf=10; %设定调频指数5 C& D8 o: _5 F
int_mt(1)=0;7 W5 @) q5 w& D, T
for i=1:length(t)-1 1 I9 ~0 N4 J) c$ J+ J# y) p1 I
int_mt(i+1)=int_mt(i)+mt(i)*dt; %求信号m(t)的积分
8 i. I4 ?* d6 q& B1 g" l( Z: g, send %调制,产生已调信号4 k6 o$ V0 `& V. p1 U9 o d
sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt); %调制信号
( k/ w$ R& g! m; S%*****************************************
. s% f9 K8 L! I0 [& ?; K%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·. u% V$ G" C l |
%*************添加高斯白噪声**************0 E# d& Q5 i8 k
sn1=10; %设定信躁比(小信噪比)
. O+ m2 O8 r/ B0 g$ J1 jsn2=30; %设定信躁比(大信噪比)' C5 }1 y& Q. M- n. U6 m
sn=0; %设定信躁比(无信噪比)
$ v8 Q" v; |) O. z/ |db=am^2/(2*(10^(sn/10))); %计算对应的高斯白躁声的方差: R' ]6 V3 t( Q0 D1 ^& v
n=sqrt(db)*randn(size(t)); %生成高斯白躁声' x: F% h4 h7 t- G0 M
nsfm=n+sfm; %生成含高斯白躁声的已调信号(信号通
* ~4 P/ v( v1 v6 i% J%过信道传输)( v% u8 Y& b* v, C
%*****************************************) h( {$ G$ _2 T# a% I$ t$ [
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
; B/ _* x$ \9 d$ J" c; |6 J4 n! D/ _%****************FM解调*******************! U& K& ^7 b0 S
for i=1:length(t)-1 %接受信号通过微分器处理, X% p+ }1 X; a) \/ m
diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
% j( J) L% [1 q) q, Send2 z; c2 ]0 X% s# P( @; X" _; W) b! I8 G
diff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)1 T/ U, Z q, D8 k& E- C
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;/ I9 W6 [0 E. o0 X) e1 w
diff_nsfmn1=diff_nsfmn-zero;
+ @- i9 U9 C+ ^ e%*****************************************3 _0 c4 ^* T9 C) ?) S6 ~' z
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·5 R7 s* C) ~' D0 |7 i* O+ ]: M
%**************时域到频域转换**************
1 ]3 z$ d* y: E" V/ ?& ?1 vts=0.001; %抽样间隔( u1 y' N( L3 \, Z& L% n
fs=1/ts; %抽样频率) D+ ]* M3 R# D
df=0.25; %所需的频率分辨率,用在求傅里叶变换
3 `, X2 H* B; _" t) g% 时,它表示FFT的最小频率间隔$ N1 m" X. Q" A# J
%*****对调制信号m(t)求傅里叶变换*****
# T0 y: X$ U- \$ {* m/ p. ~m=am*cos(2*pi*fm*t); %原调信号* T! r) W( i6 w/ e+ b( h ~
fs=1/ts;, s; C3 q$ J* M+ g7 ~
if nargin==2
* l# C1 Z/ T# i- \+ @3 w* j4 g6 _ n1=0;
$ K9 \5 \" n" W# j" h' ~else" q0 I/ \$ i4 \9 ~! m" ?5 M
n1=fs/df;
/ U/ O8 f. f0 C/ @end
' s0 s/ B- j o! E ?n2=length(m);
6 o& i, v% p8 E# i" gn=2^(max(nextpow2(n1),nextpow2(n2)));
/ C& `/ [0 d6 m2 ~) R: U1 TM=fft(m,n);4 u% S, a6 D5 z7 ^- G! v2 i
m=[m,zeros(1,n-n2)];( D! J! r# w- d0 x
df1=fs/n; %以上程序是对调制后的信号u求傅里变换/ Q. S5 j" E1 d& F4 O
M=M/fs; %缩放,便于在频铺图上整体观察
7 j" \2 e7 |% {; y. qf=[0:df1:df1*(length(m)-1)]-fs/2; %时间向量对应的频率向量+ T; K9 c; i6 u3 x' m
3 \/ P! ]1 u& y# q%************对已调信号u求傅里变换**********
! m7 }$ t; p% l- tfs=1/ts;. F( b+ s' g5 X; V s8 M; a
if nargin==2
) X6 H& m) }) R) v% X4 ^ n1=0;
C* H: ^+ h' A1 ?2 D, melse
, b; F+ s- X, T; y/ ` n1=fs/df;0 n: K, G! T9 m' @8 @, d
end, q9 i, O6 [3 U
n2=length(sfm);9 W# b1 V' | w; h. c
n=2^(max(nextpow2(n1),nextpow2(n2)));
4 k# e j6 N: B" I; _U=fft(sfm,n);
% }3 a3 b. @6 ~+ {+ O2 |; Ju=[sfm,zeros(1,n-n2)];
+ H0 S5 c. @% Y7 Odf1=fs/n; %以上是对已调信号u求傅里变换
& n) d6 m5 _/ U$ m! s1 a0 Y, nU=U/fs; %缩放; r/ ^3 L; Z) B0 Q
%******************************************; ]1 S. p) s8 e# p/ F: M+ @
%*****************************************
, r' y; J) ^/ h9 E: G/ n/ N%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·# n. ~- d& F1 K% x" [
%***************显示程序******************
^0 ?- W% K, g9 L- t' q# @disp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')
) q$ V5 V! m) g: Ppause
) P) C( y" B5 \' {%**************figure(1)****************** r7 W) \) Y7 E) V, S# a' _
figure(1)/ {* y1 g6 o. F8 ?- B* h2 l4 w
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图6 x3 I* _5 r, J$ G
xlabel('时间t');4 `1 ^1 n3 C* t" E/ s6 _' ^
title('调制信号的时域图');
0 ?3 j/ B% V7 O) J& r& Z. Fsubplot(3,1,2);plot(t,ct); %绘制载波的时域图: W; e/ A9 k% d9 B3 Q
xlabel('时间t');
! r3 N0 H) K! ]% A) C% @5 T; C5 }title('载波的时域图');0 F# h$ i0 c/ j$ U# K9 J o
subplot(3,1,3);" R2 s; W4 N) Y1 m9 Y) S W
plot(t,sfm); %绘制已调信号的时域图) P8 H, j/ S& ~
xlabel('时间t');
( I' X' |8 B! w2 H2 L6 mtitle('已调信号的时域图');
4 x' I$ f) r- Q1 g/ S( ^%******************************************- E% J P7 Q1 D! g! t6 `' s
disp('按任意键可以看到原调制信号和已调信号在频域内的图形')
3 l2 S T' S5 N6 f4 M& Dpause
1 m' A8 G0 H, A$ f%************figure(2)*********************
. f7 m9 ?- l9 E _% C, Ffigure(2)
/ h) Y% `; \' ~, S1 _subplot(2,1,1)& P$ W. X: s# s% P' U( D
plot(f,abs(fftshift(M))) %fftshift:将FFT中的DC分量移到频谱中心. z& s2 p; F! c8 H
xlabel('频率f')
! _" j4 Z- X) n3 wtitle('原调制信号的频谱图')
! l$ y* }$ q3 z5 Psubplot(2,1,2)
2 p1 ~: X0 s" splot(f,abs(fftshift(U))): b4 v5 @1 u" ?8 J
xlabel('频率f')
- h$ R& w9 o" x$ L; h6 {title('已调信号的频谱图')$ h$ i1 Q# f) L+ G2 S
%******************************************' P( V1 ^8 _3 J1 v- H9 [3 x4 U
disp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')
2 E& \5 `) Y; u* o5 }" b* v; u( ~pause* O2 m8 ^* }& Y; K
%**************figure(3)******************9 m: K0 K S$ h9 i7 H% |% s% c
figure(3)! h7 R0 {+ L! w2 ~! U( P# D
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图/ {" o4 T7 p4 G1 j& A
xlabel('时间t');
+ X) V2 E8 U& n4 |title('调制信号的时域图');
+ _% \0 u- u, M. msubplot(3,1,2);plot(t,sfm); %绘制已调信号的时域图
?. l) i$ x2 ^xlabel('时间t');4 m8 y& v, w+ K; y" f
title('无噪声条件下已调信号的时域图');, ]0 y+ K* D7 @, p
nsfm=sfm;
9 U! }$ |, s5 q5 a: s# kfor i=1:length(t)-1 %接受信号通过微分器处理
. Q9 x* S6 }3 q/ U/ s diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;& q- A! @7 v5 E4 b; P+ g, D2 T
end3 L8 x# q, j, l& ]) D) T
diff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)) l' m/ j1 s d; g
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
' y! k. D2 v( q, y9 B- I" bdiff_nsfmn1=diff_nsfmn-zero;
1 R' R0 D a: }* O( Hsubplot(3,1,3); %绘制无噪声条件下解调信号的时域图
% e; a3 I$ t9 f- i' a" q3 @' Hplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
$ G- Q, a9 F6 N- ~3 zxlabel('时间t');
& }1 B! |# B& R; `' k) ~9 Rtitle('无噪声条件下解调信号的时域图');- c) e) s1 Z# r
%*****************************************
1 L; u6 U* s! ~; Zdisp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
8 ]6 z& d' ]5 V: x9 q7 `- rpause2 @8 E2 i8 j) q# U3 ~6 x
%**************figure(4)******************
, U0 E0 z9 c* W* R7 u; Vfigure(4), ], E! k6 y1 v$ `- z5 V7 K
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图' F# J& C" D/ n- M
xlabel('时间t');
2 i& X' U+ Y7 j# T: [" S6 Btitle('调制信号的时域图');
u5 w% W/ H- F& Tdb1=am^2/(2*(10^(sn1/10))); %计算对应的小信噪比高斯白躁声的方差: Z7 Q8 x9 @7 k+ b3 ^4 j9 l& y
n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声
# p1 Q6 M8 Y' T- u& ~+ ?nsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通
: S I, r$ k6 y4 E6 r+ X5 }5 w% %过信道传输)
0 G, v) ?) a' }# Kfor i=1:length(t)-1 %接受信号通过微分器处理( @2 p5 B$ K A5 J8 `2 z8 x
diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
* v% ~$ A* R2 B6 r: Lend
. @# F$ ?6 j; P; q, E3 w9 fdiff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包络检波) F/ l b8 I Y: t) G
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
], N Z; ~8 s! F9 n6 Ndiff_nsfmn1=diff_nsfmn1-zero;/ F* E0 ^, n4 [) i& ?
subplot(3,1,2);) r/ `& e6 B% {( o% l/ X( F
plot(1:length(diff_nsfm),diff_nsfm); %绘制含小信噪比高斯白噪声已调信号的时域图
: L9 J7 Y, x9 M4 ?8 K$ w6 ^6 |/ kxlabel('时间t');
) r5 l/ o' d- g5 Mtitle('含小信噪比高斯白噪声已调信号的时域图');3 V$ ^; L; G" C, s; E# U
subplot(3,1,3); %绘制含小信噪比高斯白噪声解调信号的时域图
9 @# ]" [* J6 i: Z( }- hplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');7 ?8 q& T n' V- `
xlabel('时间t');
- L' @1 x% K" A8 r. l' Htitle('含小信噪比高斯白噪声解调信号的时域图');
5 B4 ]8 N- @4 F3 o1 o {% |%*****************************************
9 I2 A. I6 s' f qdisp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
) v7 G6 d: j- ]# o7 h2 `pause
- s* C7 {* Q1 u%**************figure(5)******************! D/ e2 [. S1 \6 L6 J, |% c0 G
figure(5)# [! P& Q( g$ p9 [, O$ [5 k
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图; e! d5 z" e ^" b
xlabel('时间t');
4 F6 k6 Z; ^, x" E$ Wtitle('调制信号的时域图');
( F+ f K9 y3 W" f, G+ ddb1=am^2/(2*(10^(sn2/10))); %计算对应的大信噪比高斯白躁声的方差
) I( {0 q' k% o% n7 q* b; h4 m. I" tn1=sqrt(db1)*randn(size(t)); %生成高斯白躁声
( N" Z d' t; }) w0 C9 Q h* Znsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通过信道传输)
# ]( H* G% }$ d5 M* I, R4 ffor i=1:length(t)-1 %接受信号通过微分器处理
. \1 C/ k D( }. D) ?, r diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
) {( w) p8 h. Zend6 a2 \& V4 o. X: ~7 y/ Q0 b& Q1 J
diff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包8 f+ b5 x0 Q+ d" Y5 z7 A; k
% %络检波)* M+ D' i0 `2 T+ t: C
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
1 j- r3 a& v4 |- o" Xdiff_nsfmn1=diff_nsfmn1-zero;' D( j6 l$ ^5 l4 v$ d3 ~
subplot(3,1,2);
, x' b4 w6 U9 g% pplot(1:length(diff_nsfm1),diff_nsfm1); %绘制含大信噪比高斯白噪声已调信号
" M; Q+ u# [0 U. g% %的时域图6 q) r+ r/ r" T3 ~8 M+ }+ O
xlabel('时间t');; U6 o* c: b2 h) m- R3 |
title('含大信噪比高斯白噪声已调信号的时域图');
" y7 o) V2 x' P- usubplot(3,1,3); %绘制含大信噪比高斯白噪声解调信号
& `6 d! U2 I4 @5 G$ }% %的时域图8 j8 U3 j* O. r3 @1 m" N$ h+ b0 F
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
# r+ L2 f- I4 c3 ]$ s. Exlabel('时间t');
( {6 k3 }) g" Q/ U, `" e9 Ptitle('含大信噪比高斯白噪声解调信号的时域图');1 Y C) x, M( v+ x* e( A/ x
%*****************************************
) `5 y& P8 f) _& p6 m- H%******************结 束*******************8 j" C3 J. n) e- C. ~2 v- _
2 m7 i7 F {7 t6 Q, |
2 Z# s5 U6 l8 b) g5 D4 R1 r+ R |
zan
|