- 在线时间
- 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( r) G( X, K" G B: k
%频率调制与解调的Matlab演示源程序
+ W Y3 y& @: q4 M0 s$ Y8 G; Z4 J ]%可以任意改原调制信号函数m(t)
2 a0 W: M/ b1 `3 o! V) c* m" [%电子信息工程 杜怀超 091308305 1 l/ I ~3 t" A7 @7 X/ n- M0 Z
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
4 @3 c- p, n7 H' @4 a* i%*****************初始化******************
1 C+ R" F7 u5 @8 E! K7 [( b1 ?echo off
) u- F! `3 o7 lclose all
) a- ~9 ]4 t; s$ Z" Aclear all
' [1 k' d% r, f7 c+ L: e6 l7 Vclc N5 ^0 z5 m0 w* e* P9 n
%*****************************************" ^! h6 u( o. Z8 w' t$ W3 t! ?
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·0 K- j3 Y* S6 P
%****************FM调制*******************
8 t0 }; q& P# S7 H5 U% }: @' pdt=0.001; %设定时间步长- q! r5 q9 U5 q" Z' U/ N+ w- A
t=0:dt:1.5; %产生时间向量% F. q1 S o; `4 I) }
am=5; %设定调制信号幅度' G) M* b( J, t2 m. s! g, h% I
fm=5; %设定调制信号频率& t X, J8 n0 ? r; I( n
mt=am*cos(2*pi*fm*t); %生成调制信号
0 Y; T/ f n' H5 w) x* T1 Nfc=50; %设定载波频率/ Q- s/ I% z9 l: s8 f: }4 T, i
ct=cos(2*pi*fc*t); %生成载波
' l) _- N5 y) W0 Z' Kkf=10; %设定调频指数
3 u- [" A Z, J) J. g$ c6 O/ _ Pint_mt(1)=0;$ Q5 U* O: D* R0 X+ a! C7 G+ Z
for i=1:length(t)-1
8 g" J# m- [7 N K3 c( s& q int_mt(i+1)=int_mt(i)+mt(i)*dt; %求信号m(t)的积分6 v8 N$ y0 i' x5 m3 D
end %调制,产生已调信号
5 n5 ~& ]. n6 Y/ g# Usfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt); %调制信号" P0 o3 J, j q2 X+ x- u
%*****************************************
0 O/ b1 h( M, G% Z% L+ Q%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·- g) [1 w3 B$ R) O
%*************添加高斯白噪声**************
1 {( i! |* N; i3 u! Psn1=10; %设定信躁比(小信噪比)) w" ?. E. [* l' s: R
sn2=30; %设定信躁比(大信噪比)
0 C" s$ H: g& g9 A0 d: N. b0 i Lsn=0; %设定信躁比(无信噪比)
3 h0 ~5 ^9 M- r0 Mdb=am^2/(2*(10^(sn/10))); %计算对应的高斯白躁声的方差
, f! {2 E B4 p: Z8 I3 @n=sqrt(db)*randn(size(t)); %生成高斯白躁声
+ b8 R6 F% w' b7 ], Knsfm=n+sfm; %生成含高斯白躁声的已调信号(信号通
7 U# c0 s" |0 K%过信道传输)1 v3 H) G+ j3 m+ \, ^9 y4 c
%*****************************************! B5 d6 Q1 m- H! K2 m* l
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·8 ]/ c( g @" X3 J! u
%****************FM解调*******************
/ m$ J- g2 g' a+ |- F. M* zfor i=1:length(t)-1 %接受信号通过微分器处理
5 Y( Q, J; c# X6 U diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;/ f2 A. ~+ U& F2 m
end
7 e+ @+ W* D6 [5 R$ ^ Cdiff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
" G7 U9 Q" \* xzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
" o& k- B; Z% I( y$ Q" Mdiff_nsfmn1=diff_nsfmn-zero;. i$ u% D4 A9 c" q
%*****************************************# t. M- t" V/ l
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·9 w# l: {. [8 x0 Q
%**************时域到频域转换**************
* W+ S9 e4 s, o u p, Bts=0.001; %抽样间隔
" ?- r2 v7 @8 \8 Hfs=1/ts; %抽样频率. L) R* @- t9 D7 G% ~# P) m$ o
df=0.25; %所需的频率分辨率,用在求傅里叶变换
& x( i: G. f$ z4 H% 时,它表示FFT的最小频率间隔
' P3 A! Y& A# R" a& y V%*****对调制信号m(t)求傅里叶变换*****, ?, P) d) M- J! K4 t3 \2 J
m=am*cos(2*pi*fm*t); %原调信号5 w3 |% y( p7 K, s: g2 a* n
fs=1/ts;
4 G0 {3 t/ p4 [" z/ o8 h/ p8 bif nargin==2
2 n9 o$ T7 H) F& O: x" g n1=0;' x" A6 J" a1 [$ w' a7 _# J
else
$ K/ ?; \, U9 l0 ?5 A n1=fs/df;
) x/ p1 ^; V5 f" J: G; N9 hend$ S6 G+ s. s" b. w7 o9 D% j
n2=length(m);
& a) Q. f1 v& D, }6 c3 ^n=2^(max(nextpow2(n1),nextpow2(n2)));4 n) _7 ~4 |) L! P- f
M=fft(m,n);
# m* [ \ K3 X0 Tm=[m,zeros(1,n-n2)];: D m8 j. O N# o: Q
df1=fs/n; %以上程序是对调制后的信号u求傅里变换
' i1 G2 F ^* v4 cM=M/fs; %缩放,便于在频铺图上整体观察; C* B, R; z* y0 z% s- a2 v7 y
f=[0:df1:df1*(length(m)-1)]-fs/2; %时间向量对应的频率向量
6 n: W/ u# v0 f/ F/ j' D' I
/ r* C% l1 z& Z* u a%************对已调信号u求傅里变换**********
5 ^ Q' z3 l, `) f, K7 yfs=1/ts;8 n$ x- i; w! k. T4 y0 _% u
if nargin==20 c( l' |- E% G+ D9 g
n1=0;
: H) j; Y; }, velse- s: e# T+ ^- C' m
n1=fs/df;
w( ]2 P( ?/ |: A8 F+ send
' e: S* _+ S% R1 en2=length(sfm);
7 [- A- I/ Q( B0 A5 i6 s2 B: qn=2^(max(nextpow2(n1),nextpow2(n2)));
" T' {, \8 o0 z$ q. N, C# Q" eU=fft(sfm,n);
- s4 n4 Z( B0 O% e. h9 bu=[sfm,zeros(1,n-n2)];) [& B" l y: M% g0 R
df1=fs/n; %以上是对已调信号u求傅里变换$ j' x9 y* T8 q8 l* z7 o3 u% ]
U=U/fs; %缩放: b7 @( ]: T8 p* W* Z
%******************************************, ]& I6 G; r" h; J( D
%*****************************************
5 ]) [9 J; u: E5 c$ |%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·3 C6 X; Z" G- z2 A" v o$ z" T4 m. \
%***************显示程序******************4 ^$ ?1 h. K' J! ?
disp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')7 M5 n% _/ x: w* w" [% n& F$ E
pause
' H8 p+ O- U+ w, A$ o%**************figure(1)******************, t* b4 Z$ F5 _) _, Q, Y
figure(1)0 K; e. G D, x, c: T; w
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图4 y8 m* y5 u) A
xlabel('时间t');- {# \* \3 }: K1 a( U4 ~6 L6 H
title('调制信号的时域图');2 Q$ M l5 {3 `; p: i; D
subplot(3,1,2);plot(t,ct); %绘制载波的时域图8 B6 g5 ]9 r6 d& j* s9 h: T( Q( Z
xlabel('时间t');/ B6 @3 P) `: Q; ?+ C
title('载波的时域图');
" }6 W0 V! L8 b0 K2 Wsubplot(3,1,3);. P0 W& f( {% ], Q% w; d0 @
plot(t,sfm); %绘制已调信号的时域图+ W6 N2 T8 ^, J, ^( _. r/ L4 |/ @
xlabel('时间t');
1 S4 n* f6 Y. |title('已调信号的时域图');0 I9 O/ C; o0 V+ p9 @4 O
%******************************************+ [# Y1 G$ a; i1 q
disp('按任意键可以看到原调制信号和已调信号在频域内的图形')$ K- Z" s0 v: a( }8 [4 J
pause: f. T$ t/ f$ Q4 {
%************figure(2)*********************
( L$ P/ m/ p2 r+ F+ G" u mfigure(2)
4 G, p e* T% Q+ I [1 H: D3 Dsubplot(2,1,1)7 u) a% g, G, ]0 k
plot(f,abs(fftshift(M))) %fftshift:将FFT中的DC分量移到频谱中心
& t/ A. X- V' d/ n+ I0 yxlabel('频率f')* M3 u* B3 N0 ^- m3 Z
title('原调制信号的频谱图')
/ O8 n- F. {8 ssubplot(2,1,2)! L% P* o: K% Y3 V3 h& O, b
plot(f,abs(fftshift(U))) w: K5 ]7 C+ ?( o5 D7 s% ^( p9 I( U8 G
xlabel('频率f')
5 V' F% O0 e% c6 i% g' T. htitle('已调信号的频谱图')
( f# A% I$ u$ V1 ~7 Y1 L3 e( B%******************************************
9 ?% ~) O" h6 G( _+ Tdisp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')9 C! O5 w F* C
pause
: {- a2 u2 q% D# \/ n%**************figure(3)****************** ^( S {/ W1 d/ L& W" s0 N
figure(3)
}: s9 I) {* A2 gsubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图* Y. S4 P' b! F0 w4 G( E- \7 T9 E
xlabel('时间t');& q4 \; j+ K. [: [+ i. u
title('调制信号的时域图');
2 P: E4 m" ]/ N/ W4 r- ?subplot(3,1,2);plot(t,sfm); %绘制已调信号的时域图
" F3 |: @) K1 r* ~5 ixlabel('时间t');
" a/ n, c$ L. A- \& Wtitle('无噪声条件下已调信号的时域图');, X% |% S4 X( D) b- o
nsfm=sfm;
) \2 J, s4 @; l% }; j9 q4 ~for i=1:length(t)-1 %接受信号通过微分器处理
) H- ?/ K: D( v4 A1 e diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
4 |* t; {9 u% O+ x0 send
9 |4 T9 ~: A; ]! qdiff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)7 K1 E- _, a/ S4 q: N- j
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;. ?0 j( V. Q; N" q3 t8 |0 [/ i" o
diff_nsfmn1=diff_nsfmn-zero;6 L w8 ]& z' k2 u8 q5 X% Y/ ~
subplot(3,1,3); %绘制无噪声条件下解调信号的时域图
' W" s! h( y* p- w, t0 Eplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
9 x) ~) U7 K2 C, kxlabel('时间t');
% H; a0 d: C% ^title('无噪声条件下解调信号的时域图');! @8 y7 k! \' O% Z$ F/ O
%*****************************************
8 \( m/ ?" E: g% zdisp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')9 S) z0 `4 L4 T" ?* |. r
pause
- t1 ~% ]! V2 o# Q6 v%**************figure(4)******************0 W n* T7 e7 Y$ @
figure(4)
( `; c# U+ `+ g Rsubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图2 D# I3 ~. y4 b9 K6 R/ @4 K
xlabel('时间t');' H5 k# J/ [/ p/ r N
title('调制信号的时域图');
1 ?4 H6 {5 j- ]" z* Ddb1=am^2/(2*(10^(sn1/10))); %计算对应的小信噪比高斯白躁声的方差8 t& `: Z. u/ E& U% u
n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声6 |8 Q& b: t B9 e. Z/ {. X
nsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通& b( M' ~! Y0 Q# p" Q) \
% %过信道传输)
# f3 Z2 H3 v, j( W3 v* ^2 dfor i=1:length(t)-1 %接受信号通过微分器处理
; v! z- ^& ]& y) K# l- v diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
* ^8 ?, Z+ ~: i% M( qend( C9 ^4 Z% X0 X, r4 S& s O" U
diff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
6 G. ~' ^/ Q1 c% Y: L; r# dzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
3 `1 y" n, P3 Z. W2 D' `diff_nsfmn1=diff_nsfmn1-zero;9 N7 U) \( k8 E4 c! R
subplot(3,1,2);
. Q1 X* N" D0 G+ _- Y6 R) Y1 r: rplot(1:length(diff_nsfm),diff_nsfm); %绘制含小信噪比高斯白噪声已调信号的时域图6 l4 t) z* P9 _
xlabel('时间t');$ y7 A, M6 A( M8 p( s( Y
title('含小信噪比高斯白噪声已调信号的时域图');
\, G+ z# [" O% }subplot(3,1,3); %绘制含小信噪比高斯白噪声解调信号的时域图
7 s9 I8 l% Q* s- ?plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');5 k2 ?1 k X/ ?2 h
xlabel('时间t');
1 o' ?+ R g& K# M: e) W1 wtitle('含小信噪比高斯白噪声解调信号的时域图'); D# {+ ~9 o: }9 D+ P. ~4 t
%*****************************************
. K) o$ _( l) {6 P- n( |8 Xdisp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线'): m1 }$ l) q, S5 ^" F) H' s; x
pause
- z9 d! r# Y" ]* _( j/ H5 `* ]( W%**************figure(5)******************4 V: t3 p- A% r
figure(5)- z5 J- U6 C' G9 @2 C, ]
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
* p/ ^% F9 T9 O- r3 G9 H% K4 n1 z) Kxlabel('时间t');4 k, ~) t5 a$ H0 E9 }
title('调制信号的时域图');3 ^( f& H% F, a: p9 E6 V) Q
db1=am^2/(2*(10^(sn2/10))); %计算对应的大信噪比高斯白躁声的方差( I# O9 |) G0 x5 x; r: E& Y
n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声
* ^& a' m" y* X! Xnsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通过信道传输)
1 e W- V; f9 L8 C; Mfor i=1:length(t)-1 %接受信号通过微分器处理
- A; M' V1 t& ^$ y" _, f" K diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
1 V J& u e8 j" i7 rend5 @6 G2 _( y' O K
diff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包1 W4 [2 W: U# ^, B8 G2 D9 q
% %络检波). N1 G4 J; V8 s" S
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;. ~$ G5 \5 k0 @0 T. F
diff_nsfmn1=diff_nsfmn1-zero;
" C: j5 R9 |; _subplot(3,1,2);
8 o+ V/ e% D! s, d5 I5 ^9 J. ^plot(1:length(diff_nsfm1),diff_nsfm1); %绘制含大信噪比高斯白噪声已调信号/ H- _: y* `8 q% ]) w4 B4 D
% %的时域图
7 U( v+ H2 |* c% d2 cxlabel('时间t');
* n0 K6 M* E* P3 }' r# @2 htitle('含大信噪比高斯白噪声已调信号的时域图');4 _; n( k5 O/ g3 T M
subplot(3,1,3); %绘制含大信噪比高斯白噪声解调信号5 u: S0 o% C- ?' z( ^/ J3 U& m8 L
% %的时域图$ r+ O/ Y& N! f/ s9 Y
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');1 I6 {8 O; e, i. Z8 [
xlabel('时间t');
( t8 I8 ^* ^: N: _/ @8 r- ^7 Jtitle('含大信噪比高斯白噪声解调信号的时域图');
! r5 o9 D/ m# U7 j& Y2 n%*****************************************3 p/ m% R @1 A/ q" n1 o
%******************结 束*******************: ~. Z F- W. X
( ^9 F( u; p j7 A
6 s2 S L+ R, G' o2 h! Q# Q |
zan
|