- 在线时间
- 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- j7 c: s4 x2 G+ h# p: [! L. y
%频率调制与解调的Matlab演示源程序! m0 a3 t/ `* F5 W" y. Z
%可以任意改原调制信号函数m(t)
5 A! w5 P/ p2 ^1 O: G& I& \%电子信息工程 杜怀超 091308305
5 {& v) Z4 r x( U%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·' h* S" V o2 U; h0 I8 V) `
%*****************初始化******************% ^0 ^" {# d+ N5 C' c
echo off 3 f+ o1 Z6 ]( u
close all+ Y% }* F! y9 ?. u# q' m
clear all
8 P, q6 k ~; D, E; o) vclc
2 B$ ]" _1 Q @8 n+ I%*****************************************! O/ S. e0 i) X
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·+ G, {& x0 N1 @* r1 t
%****************FM调制*******************
2 l$ {& e: U6 w7 \- H: @dt=0.001; %设定时间步长9 D5 k1 ^. t. L1 s# k8 C
t=0:dt:1.5; %产生时间向量
$ Y0 [7 x+ `/ R1 Q5 w1 f. Zam=5; %设定调制信号幅度
% W6 | V+ Q0 e. Z' j( J. efm=5; %设定调制信号频率. \4 N3 `* a3 j! f
mt=am*cos(2*pi*fm*t); %生成调制信号8 V0 G; D- P t- D
fc=50; %设定载波频率5 n5 X( Q/ v' D2 g* d* `/ r! n
ct=cos(2*pi*fc*t); %生成载波" R8 r7 @: V1 E
kf=10; %设定调频指数7 u- N/ M6 ~/ r; o7 e
int_mt(1)=0;$ n! r2 u: ~! {+ H: E
for i=1:length(t)-1 + O/ ?4 \: B( ?7 w
int_mt(i+1)=int_mt(i)+mt(i)*dt; %求信号m(t)的积分
/ l5 I2 F, k% J* c+ s2 o$ Q( V5 v9 oend %调制,产生已调信号$ e* ~+ D$ w$ `$ L$ _5 Z
sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt); %调制信号
% t; E/ `9 I- J3 _%*****************************************
3 y0 B- ~' ?. ]+ l. u& Q# {3 C%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·, M9 y' b, v. z
%*************添加高斯白噪声**************
2 N( x; ^" [0 U2 B1 v7 ^0 j, Jsn1=10; %设定信躁比(小信噪比)" x6 G( l& y8 Y$ ]! Z0 e
sn2=30; %设定信躁比(大信噪比): b( L; u0 o6 \% m5 e
sn=0; %设定信躁比(无信噪比)( G/ r$ t1 |; x# w
db=am^2/(2*(10^(sn/10))); %计算对应的高斯白躁声的方差& h$ [4 x% S" X$ u5 {: }# \
n=sqrt(db)*randn(size(t)); %生成高斯白躁声
9 F& M T6 N0 ?1 o1 p0 n) A$ ]nsfm=n+sfm; %生成含高斯白躁声的已调信号(信号通" v* m" X& l; q) b5 |3 M+ z
%过信道传输)+ u; S6 x( Q3 Y7 w' h, @
%*****************************************
& y* |' \* T M6 {) C%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
+ T& x2 Y2 X, D5 W%****************FM解调******************* ]8 {: ?' q, V1 {8 D! K$ L( S: f# J. w
for i=1:length(t)-1 %接受信号通过微分器处理; l8 @$ I6 S X; K8 B+ N* F7 q
diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
6 O' _1 {0 r* y) h0 g( I7 q6 e* Lend' Y* {4 t, ~& b$ _2 u
diff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
& t% I+ i9 h: L) c3 v: w( c( }& mzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;& Y+ J2 w/ F7 N4 [7 r6 D" b+ D* f7 H
diff_nsfmn1=diff_nsfmn-zero;. c/ m2 a! a7 X, c$ M
%*****************************************" j( l# w$ x, @1 ]( s, k* K
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
6 y9 ?- B X- S%**************时域到频域转换**************( t' [4 w/ F6 a* q3 L
ts=0.001; %抽样间隔
; e9 z& U d& [# H/ Kfs=1/ts; %抽样频率
' K, u# d8 |8 d& f! Zdf=0.25; %所需的频率分辨率,用在求傅里叶变换 w- I( o# O2 @/ r+ { g+ L
% 时,它表示FFT的最小频率间隔
/ f9 ]! ]- e8 S3 e$ {%*****对调制信号m(t)求傅里叶变换*****
8 d) A0 ?% k( N- _9 S" Im=am*cos(2*pi*fm*t); %原调信号
# Z- O }& v( d1 R) lfs=1/ts;
9 u( B1 L6 {; a: a2 U3 vif nargin==2
$ k5 k3 b1 ]# u1 n0 w0 g7 K n1=0;
0 L$ t& q! G+ m7 O6 Xelse) m1 g1 }2 e( |: B* ?* l( ]
n1=fs/df;
' n( H2 U& v& T6 x# J) iend
" l$ c, [! r7 Cn2=length(m);
4 e! C; S& h+ }1 _0 Z& cn=2^(max(nextpow2(n1),nextpow2(n2)));
* V% A$ w- Y; f! i/ y) |9 AM=fft(m,n);8 A9 R6 K: Y9 o
m=[m,zeros(1,n-n2)];$ z% T/ `1 {& z+ \6 e3 h. F
df1=fs/n; %以上程序是对调制后的信号u求傅里变换6 H" n- c5 d' F3 D' J
M=M/fs; %缩放,便于在频铺图上整体观察' |% g, P b2 Y; a9 a& Q5 y2 s
f=[0:df1:df1*(length(m)-1)]-fs/2; %时间向量对应的频率向量
0 A+ p* k% J1 P4 m% S, f
. M* W+ P2 ~. {) [%************对已调信号u求傅里变换**********: V+ n3 c1 U) Y+ ]9 O
fs=1/ts;
/ Q S# n0 g6 c5 \6 ]$ Zif nargin==2+ N; ~6 y" o, e# Y
n1=0;
% U- _6 d4 d5 U( F2 e% A; Relse
$ Z8 A5 v# ~4 M% N. i n1=fs/df;
! F7 ^0 \) r& `' k! h: b3 _end7 ?' R! A/ @( J) K
n2=length(sfm);
. H" ^+ j. ^) L. {9 e4 Nn=2^(max(nextpow2(n1),nextpow2(n2)));
; `0 ~0 Q G+ ?7 y9 n2 s4 D& |- JU=fft(sfm,n);3 Y: _0 s' n) e) Y9 x
u=[sfm,zeros(1,n-n2)];
1 S* h' W1 s* ^2 Fdf1=fs/n; %以上是对已调信号u求傅里变换
, B. T3 L) _. e& Y3 L( L9 `U=U/fs; %缩放0 K6 n) c. g$ V1 S
%******************************************
0 h2 ^: q& v: ?8 z%*****************************************8 D+ X' O8 [, Z/ O1 U. c8 D
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
# t. A9 H& h1 P* I2 [& A& m M%***************显示程序******************
+ X; d. ?7 Q- Y) o9 S- {5 ?- ^disp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')
- N! Q( G' F$ u4 N2 b* Jpause( B) T& A$ r2 \' g( k$ t( y
%**************figure(1)******************
! l; ]% w* Z! R' H6 Mfigure(1)
; o, A h2 D2 l9 L0 hsubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图4 `/ @. q6 a4 \7 V) A+ ~
xlabel('时间t');) L0 b) n# P- _2 H$ \) x7 k5 c
title('调制信号的时域图');# t: T0 \& U" u8 U$ r. s8 ~2 Y
subplot(3,1,2);plot(t,ct); %绘制载波的时域图
5 V& w% Y& y) s4 j; u8 h" pxlabel('时间t');3 e! G5 l6 t# j, ?4 _; }
title('载波的时域图');
9 G6 M" ]7 ~* [4 {subplot(3,1,3);
6 I. C- N/ S j, _plot(t,sfm); %绘制已调信号的时域图. t& d0 P7 P' X4 P T5 u: U0 y
xlabel('时间t');
5 P& q: i7 d: o" x* v2 Qtitle('已调信号的时域图');
# o M8 H9 S. K* Z. j%******************************************
% {9 r- [% |3 u. i+ E" D; ddisp('按任意键可以看到原调制信号和已调信号在频域内的图形') x. b+ `/ }( C* r- M# ~1 M4 E
pause7 Y: F! G, A8 ]$ M* f
%************figure(2)*********************: i5 r. p. S4 V) I+ ~
figure(2)
9 Z& @( G, e0 [2 B8 W. M9 Csubplot(2,1,1)
' A: Y; b* ]* [5 @0 K! cplot(f,abs(fftshift(M))) %fftshift:将FFT中的DC分量移到频谱中心& A" {7 l$ o+ s$ H, w( k
xlabel('频率f')
7 p$ a- |+ U# v# H: S( ~6 A" b2 @title('原调制信号的频谱图')% j( H5 t2 D9 }! I5 R: R
subplot(2,1,2)
( C0 T+ u5 `, ~/ g' t9 R3 L: hplot(f,abs(fftshift(U)))
4 V3 R8 Z2 d8 u5 R" S: s3 j1 Pxlabel('频率f')
7 J: L8 E+ | h% h+ u9 Q# |title('已调信号的频谱图')( T$ u$ `% H% b
%******************************************
: o; B) E# J2 T8 L( G j# J; W/ rdisp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')
( ~9 W+ P3 v% L- Z/ h7 \" Ppause
1 }. L- Y0 L6 G) Y6 F, d% L8 f%**************figure(3)******************$ f5 p2 `& q1 Y3 t
figure(3)
; A. O, ~/ m5 J1 Ssubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图! x' Y; ~+ A0 g# s7 K' N# U$ U U
xlabel('时间t');
7 ` f& h5 v# ]7 ]8 ^: xtitle('调制信号的时域图');
" N1 ~, y# G p+ Lsubplot(3,1,2);plot(t,sfm); %绘制已调信号的时域图" l! }/ x- B0 U$ ^. G9 g
xlabel('时间t');" W: ]: o3 S6 Q5 y4 ^1 M
title('无噪声条件下已调信号的时域图');0 Q( l# F1 B- S
nsfm=sfm; & S Z7 B7 ]6 r% t/ E) K7 P
for i=1:length(t)-1 %接受信号通过微分器处理
, V* Y" Z/ k+ a% a- L, \ diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
7 B; ?- l& D/ Q' d. D& Qend( z- Z4 `* g- |4 ^* P! U: ^
diff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
2 W9 p3 g: Y$ L4 Z; pzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
& h( B! t! k+ O+ ?0 @diff_nsfmn1=diff_nsfmn-zero;
$ v5 Y2 z6 a0 \( Zsubplot(3,1,3); %绘制无噪声条件下解调信号的时域图5 P9 J1 w2 G( R& k
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');: K3 D/ J4 @ d7 X7 _
xlabel('时间t'); & M6 p2 w( k. P b: f0 v6 {
title('无噪声条件下解调信号的时域图');
4 o- \- r8 T6 `. z, n k%*****************************************- k x: i; s! A+ {6 [& i
disp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
) H( ?' k9 b8 |) j! P9 kpause/ Y9 j' R- _- }* G% Y0 Y
%**************figure(4)******************
1 J( @; p0 t! ]2 Z8 `figure(4)% T) A* E$ G B+ k
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
3 ]9 E" D3 B0 y; \. F2 a. b( rxlabel('时间t');, V' {: F$ }8 e5 T+ E
title('调制信号的时域图');) u- P5 ^ r0 V: b$ z* i
db1=am^2/(2*(10^(sn1/10))); %计算对应的小信噪比高斯白躁声的方差+ z0 {8 F8 a% o5 e+ N
n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声. z% f% {* J% s
nsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通
! Y t7 w4 j( i# u9 |# P2 `% %过信道传输)2 T& ]" g3 m1 L4 B% S S* Q' e
for i=1:length(t)-1 %接受信号通过微分器处理/ A5 Q2 P9 |+ v' T/ p1 G/ m
diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;% z+ h9 m' D+ T/ ?' b/ s* K" T
end
9 }/ Z. K3 _( V" W; zdiff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)4 @ d" Y# B$ B) E
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;0 v9 \% S! ~5 D, K$ _& z2 k5 `
diff_nsfmn1=diff_nsfmn1-zero;/ }0 Q S9 \$ g5 V7 |( E% j
subplot(3,1,2);
! X8 j* F' |3 X! yplot(1:length(diff_nsfm),diff_nsfm); %绘制含小信噪比高斯白噪声已调信号的时域图+ N# E6 E. W# v% D
xlabel('时间t');
7 Y+ y8 F& H0 i% k+ B' G' R @" A4 Vtitle('含小信噪比高斯白噪声已调信号的时域图');
' X# x1 t1 {$ R$ c# n1 asubplot(3,1,3); %绘制含小信噪比高斯白噪声解调信号的时域图
/ } T. M: g+ N5 u2 D8 l/ o" T! splot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');5 C3 R3 E/ [/ J4 \. u
xlabel('时间t');
( t% Z9 ^; S) b8 m2 A& Ctitle('含小信噪比高斯白噪声解调信号的时域图');1 a) y4 S/ g; t5 m
%*****************************************" Z4 f9 \* q1 _+ r$ {, Q' u
disp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
/ C6 q) |- ]0 e9 ~7 Wpause2 {: z W7 {- W5 P: j# R8 ^$ Q3 P
%**************figure(5)******************
8 Q* a* J% B6 r6 p1 r9 N8 Q4 B" wfigure(5)3 X& P: [5 |) c/ e' B
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
% C, _! k7 M1 {; Z9 Fxlabel('时间t');
5 e* h; c( \. E3 R" ktitle('调制信号的时域图');
3 s6 q0 U- K9 \7 @db1=am^2/(2*(10^(sn2/10))); %计算对应的大信噪比高斯白躁声的方差2 O. s3 e+ ]/ H8 b! g0 u
n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声) o( b/ U3 y& c/ f& c: b- ?6 e E( f
nsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通过信道传输)
+ F* t2 \1 c; y. Vfor i=1:length(t)-1 %接受信号通过微分器处理6 ^0 b& }* N: {
diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;' E9 _3 B5 Y: Y9 }2 K# m4 w: O, m5 O
end( P/ ^& J4 V& p' U
diff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包9 H7 X) B6 J- R B& v5 G% F
% %络检波) A/ h+ r" _3 o: v* W3 S& I
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
- [" X" O: v9 m2 t. p* Idiff_nsfmn1=diff_nsfmn1-zero;3 E R, u6 F& Q4 o% X
subplot(3,1,2);+ N/ Z, i) D( y0 l
plot(1:length(diff_nsfm1),diff_nsfm1); %绘制含大信噪比高斯白噪声已调信号
6 g* Y R* E( n% %的时域图
6 r, R# j% G: b, M. yxlabel('时间t');0 i* Z- u0 a8 |7 w5 P( w) p+ b8 O7 x
title('含大信噪比高斯白噪声已调信号的时域图');
/ o7 ^1 n0 f: P) z8 Esubplot(3,1,3); %绘制含大信噪比高斯白噪声解调信号; \3 N- a8 h; ]8 i, J1 ]
% %的时域图( e( R. d) j9 a; H. K$ V
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
) G* ^: t. y) t: x1 Nxlabel('时间t');
( Z/ s2 q7 q- Ltitle('含大信噪比高斯白噪声解调信号的时域图');
% u9 h3 l `% y- X%***************************************** c6 G- K3 c3 {$ W. o9 d. ^# E
%******************结 束*******************: M: s; ~7 ?9 G2 Z/ w
: Y! i) z0 B' \4 s* W
5 @1 K4 S! x8 n1 l5 [" A* g |
zan
|