- 在线时间
- 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 i/ @% s) s: e
%频率调制与解调的Matlab演示源程序
( z, F) s. I- {; a, Q5 ]%可以任意改原调制信号函数m(t): X" d8 v% G8 C7 y+ h' X! |! {
%电子信息工程 杜怀超 091308305 & }, G I7 p; A; @% Q& `7 @, U
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
; ~7 \/ v/ y; W%*****************初始化******************
: w6 @1 M- S: H/ ~ D4 w! jecho off
5 [( s: Q' G, L" X" [close all# V) M3 J# X( m
clear all- I/ }) @, F# x
clc- P4 o+ M1 @& ^7 _
%*****************************************
1 d; K5 j7 O$ A* G: w( @9 b%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
$ ^& U2 M c1 V" I+ ?" f9 U%****************FM调制*******************. o- B- k" Z7 n/ r# j" {$ T
dt=0.001; %设定时间步长. Z z1 I% |$ ~' A; F
t=0:dt:1.5; %产生时间向量
2 w- C$ n2 X& O& z9 B( kam=5; %设定调制信号幅度) U# O' [# o) Y+ n
fm=5; %设定调制信号频率7 l3 B$ ^) ]( U6 \! S! U5 n# ?
mt=am*cos(2*pi*fm*t); %生成调制信号
% ^% u* s2 e% T% D9 pfc=50; %设定载波频率8 G' ?/ F' g% G! j: C% o
ct=cos(2*pi*fc*t); %生成载波
! W# |: c, l9 A& f& I' Z& a2 \9 n; \kf=10; %设定调频指数
: V! b r3 o D. jint_mt(1)=0;
, b/ B/ ]! v7 U# K+ P5 D. cfor i=1:length(t)-1 - h. N. R* p0 a
int_mt(i+1)=int_mt(i)+mt(i)*dt; %求信号m(t)的积分3 l M& L; ]* y1 Q
end %调制,产生已调信号- |( E) ^, p w& G& f+ S! q
sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt); %调制信号
[9 L9 R" [, U' j4 D; j%*****************************************
4 Y" N; y* k9 g5 _%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·; n: k1 ?# {& F
%*************添加高斯白噪声**************
) `; h4 `, m- F) Asn1=10; %设定信躁比(小信噪比)
' e, G& b+ W5 w$ Qsn2=30; %设定信躁比(大信噪比)! _7 a7 G, K$ b. F/ j6 v. O6 q
sn=0; %设定信躁比(无信噪比)/ B& D2 b3 L. U0 w; L' O
db=am^2/(2*(10^(sn/10))); %计算对应的高斯白躁声的方差
' s: n* t8 k8 `4 k2 f& L4 fn=sqrt(db)*randn(size(t)); %生成高斯白躁声9 D4 x$ J3 y7 d" M% W$ l
nsfm=n+sfm; %生成含高斯白躁声的已调信号(信号通" C l% h) V: [0 g4 ?9 D% g$ V
%过信道传输)
" N6 ]+ C2 w& w5 ?. y$ f%*****************************************- `6 d/ e; R5 Q% h/ q9 O
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·: O' q' q; g. G2 }- v$ d
%****************FM解调******************** l0 H# s% a! O& F; ?; ~0 H
for i=1:length(t)-1 %接受信号通过微分器处理
: H8 N# v3 Z2 b. n& @( P, Y& W diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
" [( ^0 D5 [8 n. U& e: ]0 r, ]end
4 r4 U2 y9 [( E( x3 w) M) n+ wdiff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
4 s& M' G6 H. m$ l8 C) h1 g, T1 u; L* qzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
8 ]) s7 M: i1 _9 d; Q6 ]& @diff_nsfmn1=diff_nsfmn-zero;
' G0 A/ b) u9 f, _# v ^; R$ I%*****************************************1 W# {2 E0 m/ ^! l, K
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
) O# D1 t- b4 x7 t8 e%**************时域到频域转换**************
4 l) S a8 g, a$ p9 Kts=0.001; %抽样间隔/ W6 b5 g5 A" z! i( H& `
fs=1/ts; %抽样频率
' I+ F/ T; S& ~! o3 B; t. B0 C$ Odf=0.25; %所需的频率分辨率,用在求傅里叶变换3 B; y( r8 Z5 M G: w, h6 u
% 时,它表示FFT的最小频率间隔
8 d- k( F8 t) X( Z8 d* P7 P. L%*****对调制信号m(t)求傅里叶变换*****
1 z1 P7 |, l6 S d1 Rm=am*cos(2*pi*fm*t); %原调信号
# w, `8 i+ V5 T" e% Afs=1/ts;$ W3 {9 S! A+ Y) w; g' [. w. Q
if nargin==2/ `4 ?* M4 D. l* ~' `( q2 ~: Z* R
n1=0;
- p6 E3 T+ {) W' Q7 M lelse
: u) r2 l# J* A. W n1=fs/df;/ _1 _1 h, i3 Z4 s* V
end
2 V+ i4 W9 w4 ]6 s3 K6 s6 An2=length(m);1 u3 T; T$ l( n; \: }' S' U: E
n=2^(max(nextpow2(n1),nextpow2(n2)));
3 g) p2 T6 M* @5 {8 F. WM=fft(m,n); k/ ?" {! K! p: p5 j8 ~
m=[m,zeros(1,n-n2)];% M( |& L( _+ C# q
df1=fs/n; %以上程序是对调制后的信号u求傅里变换
7 F1 b2 b9 m/ a# A6 m6 B. aM=M/fs; %缩放,便于在频铺图上整体观察
9 u' |- O: U7 ^f=[0:df1:df1*(length(m)-1)]-fs/2; %时间向量对应的频率向量
6 x- _! M% D# W. E# g. v, g# |5 u) j& a- ?8 `
%************对已调信号u求傅里变换**********8 ]% o# C4 _/ V% [# A7 b7 P G: C6 }
fs=1/ts;
% ]! p* D: U! |' }" D5 |: P0 q$ K* lif nargin==2
* p4 |0 d4 v2 p9 T. K r M n1=0;
( d* Z) [, M: W9 E( e2 @6 Selse8 F( B# t6 @' W0 b7 ~( D
n1=fs/df;0 m5 t. g' A1 H% j
end
" n2 g* J6 W% x7 l3 w Dn2=length(sfm);# C* C2 _/ \; G5 l# g5 E2 e
n=2^(max(nextpow2(n1),nextpow2(n2)));( g# A/ Q- ^( ?2 s, m2 h' P
U=fft(sfm,n);* e& }) G2 E& I8 T
u=[sfm,zeros(1,n-n2)];) H* u. T; `/ ^
df1=fs/n; %以上是对已调信号u求傅里变换
; M9 K8 W' z; B! j! u8 n% cU=U/fs; %缩放# n' P+ ?: r$ k1 K7 E o( N- t
%******************************************
7 x, S2 }/ M8 m. E/ L. q/ q%*****************************************( i3 ^7 q8 s$ T( e+ p
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·/ \6 ], j ~) g$ w, ~
%***************显示程序******************
! v, O2 }+ h! _* Tdisp('按任意键可以看到原调制信号、载波信号和已调信号的曲线'); p6 J; q6 z* [0 q( v( S$ J
pause& k' f3 Y) X) B4 J& _ {; _
%**************figure(1)******************
# Z) S5 Z, J# x+ O# }figure(1)$ J! M: Y5 p* M
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图* t6 _0 m, Z: X$ C+ J
xlabel('时间t');
; I; x( `5 O( ?. i' Ttitle('调制信号的时域图');. s1 O; a! A9 S% `; B8 Y. h+ n
subplot(3,1,2);plot(t,ct); %绘制载波的时域图/ Q1 S( D1 T6 k1 Q& t, S8 H8 u
xlabel('时间t');: R6 L4 g* t2 ?! F% r0 X% _
title('载波的时域图');
3 p2 W" n% }9 Q+ Q% i/ f6 [4 fsubplot(3,1,3);% Z- u4 ~. K$ T0 v1 C
plot(t,sfm); %绘制已调信号的时域图2 q+ q9 B n& ?, R; [. l1 b+ D
xlabel('时间t');
( c, r; t1 Z# Q9 [title('已调信号的时域图');
. }' |( j. s; v1 v%******************************************
8 z) n& G' [% d5 Y6 `disp('按任意键可以看到原调制信号和已调信号在频域内的图形')4 |% [1 z( P l
pause
! b! \* b( I6 S4 a3 {) J. S/ Q%************figure(2)*********************7 d6 Y; f7 {/ J: i3 ?
figure(2)& H) w3 d3 m6 ?& ^7 D
subplot(2,1,1)
, b+ v0 s m7 S1 ~/ J. i \plot(f,abs(fftshift(M))) %fftshift:将FFT中的DC分量移到频谱中心
! A8 k- E( ^) e. o, Fxlabel('频率f')! T/ y( A& M# E$ [! b( K
title('原调制信号的频谱图')
, V- v$ h3 l% b0 _1 Z- |subplot(2,1,2)* B# _9 I: o( y/ d
plot(f,abs(fftshift(U)))0 ^' q# S- N1 d- p7 X6 a$ [
xlabel('频率f')
" n, r! J9 J+ P0 Q: [) _, stitle('已调信号的频谱图')& d# ^0 I& m" D+ L
%******************************************8 H5 H8 @2 @1 a$ Z1 ?
disp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')
3 n" `5 Y, B4 }3 cpause
1 X% g& l8 C* e0 [, |%**************figure(3)******************4 w6 I: H; X K! S: J
figure(3)
1 d5 L5 T# i0 ^) H, zsubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
# F* X. ]( D+ P3 J/ M: c' o+ ]xlabel('时间t');% T+ z. f" V- Q7 @) ~
title('调制信号的时域图');
+ Q; X, P% o9 `1 isubplot(3,1,2);plot(t,sfm); %绘制已调信号的时域图
' k, g2 m3 {8 o4 e7 ^. q- [xlabel('时间t');; J/ g# a" X, _+ o7 ~9 k0 u( ?
title('无噪声条件下已调信号的时域图');
9 m+ ^8 c% [: `/ _, _+ Fnsfm=sfm;
. j4 F2 T& ?9 Yfor i=1:length(t)-1 %接受信号通过微分器处理* s, Z- [5 O3 \* U. O3 g9 {/ p7 D
diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;/ I4 y* o3 l$ E ?
end
- |% ~4 H! d1 c$ M0 |diff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)% P/ U- j5 [9 L/ K+ W
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;, z+ M0 M; _* X$ c) L
diff_nsfmn1=diff_nsfmn-zero;9 G- ~, Q2 i2 K+ }! e4 S
subplot(3,1,3); %绘制无噪声条件下解调信号的时域图4 v# i! |/ S! I5 v9 p/ H1 S
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
$ y" g( z- s+ R7 G/ }xlabel('时间t');
9 F `( @. c; P$ N1 G% @5 dtitle('无噪声条件下解调信号的时域图');( i# q- H0 p$ f' J/ p2 q, L! H" |
%*****************************************
& U4 h) C0 x$ H- w- Pdisp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
9 B: q* C2 u2 ~pause
0 d# a+ v' P7 K+ U%**************figure(4)******************0 H* J5 I" I6 D3 k4 C
figure(4)1 @$ ?9 F# q4 v6 u, R
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图7 d5 P( {$ V+ w) }$ c
xlabel('时间t');
/ Q4 x1 a4 ^1 ?* htitle('调制信号的时域图');
4 L. |1 c; c2 M9 Q7 u; cdb1=am^2/(2*(10^(sn1/10))); %计算对应的小信噪比高斯白躁声的方差, E+ D: u4 T2 p8 x
n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声. K: ~& U3 |3 }/ ?6 K
nsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通3 q$ y9 `( k# Y/ x
% %过信道传输)* L/ j2 n* q+ ~7 i2 d$ w: A8 x
for i=1:length(t)-1 %接受信号通过微分器处理! V+ [3 b4 ~ }6 @$ L7 R
diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;$ p& U, R) F. ~. ~* p% L
end
1 f5 d, {0 r: D7 \* r0 g/ P+ Ydiff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)) w) O' k1 l) x/ c
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
+ I9 D8 u8 {+ hdiff_nsfmn1=diff_nsfmn1-zero;
& g3 d" Z1 a* Y z/ Z2 hsubplot(3,1,2);7 u3 a5 n- }& T. o4 m5 o& f( h
plot(1:length(diff_nsfm),diff_nsfm); %绘制含小信噪比高斯白噪声已调信号的时域图
6 C k) K2 A/ b, v* d2 ixlabel('时间t');9 v$ x" d+ o8 P. g; C' W t- R
title('含小信噪比高斯白噪声已调信号的时域图');
: T3 @' i- ^* gsubplot(3,1,3); %绘制含小信噪比高斯白噪声解调信号的时域图
0 V" A: J3 }5 \7 {+ y u4 \plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');$ v2 [! s' C8 x7 P
xlabel('时间t');
7 {9 Q% }* c: @) O. T; Dtitle('含小信噪比高斯白噪声解调信号的时域图');
0 `7 _, Z; t0 _, p: u%*****************************************
: O7 n. M7 n6 Sdisp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线') e+ g% @( F. K/ ]% e8 e( S. X
pause
5 {' \1 K# X( q" l4 W%**************figure(5)******************
; T/ X; i( X. z- h1 L& Y. |figure(5)
9 ]6 K+ `! o6 a$ J% n& y' ?subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图( z- [5 B& F) V& e5 m
xlabel('时间t');
! \( o- [0 A y. c! ]title('调制信号的时域图');
& Q% D# C& v( Y$ p) m; pdb1=am^2/(2*(10^(sn2/10))); %计算对应的大信噪比高斯白躁声的方差! s+ _+ U- g8 X0 V% R
n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声
/ X; \, G$ }; W3 |nsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通过信道传输)
! U1 P: T. V6 `1 m% w; kfor i=1:length(t)-1 %接受信号通过微分器处理
; G: f6 }8 t: B2 ?. f' L diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
. g7 |" Q8 e9 b# L4 _/ f) N8 cend
% Q: S" t: H6 W* Z2 x8 cdiff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包
( r4 S7 t8 N @% a2 T% %络检波); Z. X+ t& G- b! H" p
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
' N" o1 G( m" i7 a, U" ddiff_nsfmn1=diff_nsfmn1-zero;5 S( `- R& b+ n- i2 a( Y) a# M( N
subplot(3,1,2);4 E9 R* T& E q: d4 c1 o
plot(1:length(diff_nsfm1),diff_nsfm1); %绘制含大信噪比高斯白噪声已调信号
. o6 \. N2 ^5 J5 w1 C! @% %的时域图& |; |2 V0 Q. s# E
xlabel('时间t');
, Y2 a+ k$ u. L! f7 z% H* e; [title('含大信噪比高斯白噪声已调信号的时域图');
: {) \5 t" q& `6 ?subplot(3,1,3); %绘制含大信噪比高斯白噪声解调信号
6 f/ |4 V. [. ^* f8 ^( r0 |% %的时域图
4 I6 X* h: n2 e5 q/ @5 Z1 Yplot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r'); q; U S+ z! p2 f
xlabel('时间t');
0 o* z+ r, ^ b% B( W( `title('含大信噪比高斯白噪声解调信号的时域图');( k5 \1 s) q5 o
%*****************************************
r A1 k2 m$ h& f%******************结 束*******************, G2 ^6 d# Y2 [4 O V. L! @7 Y2 |
; U9 S9 I$ B8 a6 v, M
9 }6 I1 l9 F6 |. k2 W) a7 C, L2 t! |
|
zan
|