- 在线时间
- 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调制解调系统.m5 j/ ^ h$ c u d# n
%频率调制与解调的Matlab演示源程序
( I" d( a% C( m- n%可以任意改原调制信号函数m(t)
0 l1 P% b( H3 ~4 Y%电子信息工程 杜怀超 091308305
+ t, i4 \4 Q4 t- F4 Z%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
* b' x+ l' J- @: [* v% t5 h%*****************初始化******************7 y- @$ X. V/ j# S
echo off : u1 N# b. [+ _4 Y: v) e/ n
close all, E7 L1 L5 ~1 n ]8 S1 e0 @
clear all9 ]; `6 |" F* i" X& V# [
clc- t/ G1 u" C% m# p7 l* k, z, e
%*****************************************
' y. l% `+ L) ~# X%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·. D' _2 _ z" o2 R& Z9 }( B, i
%****************FM调制*******************; h# r: j# ?& F5 U3 ?$ H
dt=0.001; %设定时间步长2 x+ o4 E1 f1 {4 L* F: e7 Z r
t=0:dt:1.5; %产生时间向量" m1 q: M0 Z# _3 A) K) q1 _
am=5; %设定调制信号幅度
+ E+ h7 z, Q$ D3 ]- z6 sfm=5; %设定调制信号频率- ?6 L; t$ V6 q' ]0 D. e
mt=am*cos(2*pi*fm*t); %生成调制信号+ t9 h+ v& _$ H0 p& N
fc=50; %设定载波频率
/ o& H6 F8 ~* p3 G" l) b! G. |ct=cos(2*pi*fc*t); %生成载波' ?) r% m/ W0 d6 P2 x4 u# @1 R
kf=10; %设定调频指数
/ F& N: T7 E+ Aint_mt(1)=0;9 j$ _5 l0 m9 e7 e' H7 r
for i=1:length(t)-1 ; c# T6 f1 b" N( ]% Q/ P& N
int_mt(i+1)=int_mt(i)+mt(i)*dt; %求信号m(t)的积分, u2 C1 k+ ]3 m8 P3 N! g4 Z) M0 X
end %调制,产生已调信号$ k& w; D0 Y1 L$ Y1 t, V
sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt); %调制信号
. n: i* s& D f% W, Q- e%*****************************************
9 ?8 h" ?- e) c, S1 M. L%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
, w1 \% A- H K% }%*************添加高斯白噪声**************' h" P- c2 I( c, @ W* C
sn1=10; %设定信躁比(小信噪比)! h8 r! N- p& w2 E- O8 f
sn2=30; %设定信躁比(大信噪比)
0 `" `% S3 v# Vsn=0; %设定信躁比(无信噪比)2 Q# [7 Q9 d! l- _" ^: H8 x; d
db=am^2/(2*(10^(sn/10))); %计算对应的高斯白躁声的方差
4 \( T1 i' F: J. gn=sqrt(db)*randn(size(t)); %生成高斯白躁声7 q/ v" {' J- B
nsfm=n+sfm; %生成含高斯白躁声的已调信号(信号通7 Y. @2 N9 ?" _- G
%过信道传输)
. s& ^3 ]6 g+ K0 r8 ~%*****************************************( Y( q. Q8 [3 ^) C) `0 c2 o$ @" {3 i3 J
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
' u/ y1 O/ x* e, F$ d%****************FM解调*******************
0 Q% Y" \/ t9 m. C9 h( e+ dfor i=1:length(t)-1 %接受信号通过微分器处理
& F. l o# U1 R4 c5 v/ { diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
( o" L2 C1 Y( z1 Cend
# k" `- q6 x3 l5 l5 v0 idiff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
F, p" s, Z2 ]! j3 k; Hzero=(max(diff_nsfmn)-min(diff_nsfmn))/2;' H* g5 C. j0 V# h5 g6 h) e
diff_nsfmn1=diff_nsfmn-zero; ~7 t5 h, k8 G# ]% T4 d
%*****************************************; x/ X1 L$ ^ P/ n3 g% h9 k
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·- {5 Z! p* D1 e3 f, v4 i
%**************时域到频域转换*************** ?0 Q* s6 j$ B8 U( _
ts=0.001; %抽样间隔
- k2 k' S, H) ^7 b" Ofs=1/ts; %抽样频率& c9 [: X; n( @8 T; ~5 H
df=0.25; %所需的频率分辨率,用在求傅里叶变换
. q8 Z( K* [1 I) T: Z% 时,它表示FFT的最小频率间隔1 j* ?: \3 K# S! t- n+ r
%*****对调制信号m(t)求傅里叶变换*****' u4 G0 o' b; _' S# ~
m=am*cos(2*pi*fm*t); %原调信号
- A( H" @0 }3 E! N F, M. x/ mfs=1/ts;
x# I( U# A: ?$ ?2 }# n$ `6 |/ J; o, Eif nargin==20 D' o. a3 s/ z/ C3 x2 N5 m
n1=0;
* B- O2 p8 O. Ielse
9 w( ?, d, S D, A3 l% N b n1=fs/df;
7 L5 B: \" @. a0 o: ?/ Iend
8 X# \" ]- E, j4 T4 k: pn2=length(m);$ Y5 U% Q8 e1 |- }6 H- |* j; Z: x
n=2^(max(nextpow2(n1),nextpow2(n2)));
1 |0 @7 I" A% {9 g1 b- x3 PM=fft(m,n);
) a Q. O1 j4 Hm=[m,zeros(1,n-n2)];
9 `5 p& P# t& M' r: v! N; Vdf1=fs/n; %以上程序是对调制后的信号u求傅里变换
/ V6 ~2 p! W' V% j2 ~ T) l% kM=M/fs; %缩放,便于在频铺图上整体观察; a9 ]! t# E) M
f=[0:df1:df1*(length(m)-1)]-fs/2; %时间向量对应的频率向量. n! _" X \3 V7 L4 S. `
, p' R( l, g! t1 d0 t, p
%************对已调信号u求傅里变换**********( L. o3 w7 R8 B+ S" f: P: f& X+ C% ~
fs=1/ts;9 z9 w" g# m( }
if nargin==2
" J; H S; u$ c, F% T. F n1=0;; |7 X8 [9 ~- q5 l, l0 f! e' f
else- q% o( {* c/ P5 J2 H
n1=fs/df;! f( h" P" d) T; S0 j$ q: |: T9 b
end% l/ W' z6 a, F( o; X, Y8 n4 y
n2=length(sfm);
4 N. p% P: }- D5 un=2^(max(nextpow2(n1),nextpow2(n2)));
' {' p: a6 ?( b( r3 s5 Q8 V! Z. p6 EU=fft(sfm,n);* U7 C' E6 U+ C) y, D: P" f
u=[sfm,zeros(1,n-n2)];' o9 `; I$ B- q7 e0 y
df1=fs/n; %以上是对已调信号u求傅里变换
( i( E. f- N0 `U=U/fs; %缩放2 T9 R' L5 p6 a
%******************************************
# \( E" u! J0 r, m6 t1 `$ Y%*****************************************' ?+ ?# E9 N9 q. |
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
, t( C, i6 o0 Z1 x7 O%***************显示程序******************
" S! e/ x0 h' w3 Udisp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')5 b& r5 F# t6 j6 j2 X: g
pause: }- e4 `! }3 f% A7 D7 T1 Y
%**************figure(1)******************/ I; f3 d( E2 n. E$ f
figure(1)& |! |5 \ @: W9 V0 }
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
- e0 b9 O9 a# |xlabel('时间t');
, l; `3 N2 N: c# G7 b5 n, ntitle('调制信号的时域图');& [+ _$ _; v' S3 X2 d1 o
subplot(3,1,2);plot(t,ct); %绘制载波的时域图+ {4 n( K% w! g
xlabel('时间t');3 D5 ^* A! n. e9 S C+ G
title('载波的时域图');
( y' g1 [7 V8 h& L( [subplot(3,1,3); e# L; \4 ]- [& P% _3 E
plot(t,sfm); %绘制已调信号的时域图* M# |, n- r, O+ Y D* r
xlabel('时间t');
! I/ F, f, z0 G' R0 @8 `7 I! Utitle('已调信号的时域图');5 i7 W6 {7 X, a- e5 r5 P, O
%******************************************0 h! q2 B( y' p( U6 Q
disp('按任意键可以看到原调制信号和已调信号在频域内的图形')
3 H9 V% h! D0 S% \. c4 e6 \pause
$ j2 w! x8 r! y1 C- ~9 T5 f+ E%************figure(2)*********************1 H- l, m4 h, v
figure(2); C; H8 i, Y: r$ N; ]1 A0 X
subplot(2,1,1). J0 C! R' p6 P; p- A
plot(f,abs(fftshift(M))) %fftshift:将FFT中的DC分量移到频谱中心$ N! B7 Y0 H2 M2 R8 p. t
xlabel('频率f')
: @! X% q3 J6 p) P; f W" vtitle('原调制信号的频谱图')
: u: R! L" h4 H. I/ u, wsubplot(2,1,2)
5 l. F2 O9 [. j3 ~( Z7 f2 y( qplot(f,abs(fftshift(U)))
4 a% |- l/ ?0 T" j+ G% @- f+ nxlabel('频率f')$ W+ e1 a* X# V$ e* v. x3 |
title('已调信号的频谱图')+ C4 a2 q5 n7 ^
%******************************************
1 S6 _: s5 m5 g/ {disp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')& w& B& d0 o. V+ Q+ d% I
pause
) ?. k" J9 `0 i( P! }7 G; B5 v%**************figure(3)******************
; c# J, ^; W8 I0 \) g g2 ~' Vfigure(3)
6 ?- i& |- ]) V0 C. f/ Msubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图6 Z4 b5 m! r& ~& w
xlabel('时间t');
! \) g+ }5 O! |% x6 x5 rtitle('调制信号的时域图');
2 z" H' e+ v! l2 M4 O2 ]2 gsubplot(3,1,2);plot(t,sfm); %绘制已调信号的时域图2 r3 H: j" F+ @7 ?# }
xlabel('时间t');
4 p% a5 @8 L, o4 W' b7 s# ~" Etitle('无噪声条件下已调信号的时域图');
. V7 C3 k0 T2 A) o9 n. e2 Insfm=sfm;
% P0 R' F$ I; f& G; ^& t! L* [for i=1:length(t)-1 %接受信号通过微分器处理
( ^4 ^0 @% u+ g diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
' U/ ^# H6 x- M$ y$ O' [9 E9 lend
9 e: g! G8 g5 ]+ l9 a7 ]/ C. Ddiff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)% L6 u2 j4 c5 C* ?
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;; i" M9 b4 t+ X6 s; P
diff_nsfmn1=diff_nsfmn-zero;- E+ Y; u/ |) p5 P) o, \; b2 j
subplot(3,1,3); %绘制无噪声条件下解调信号的时域图' f+ H" N5 d e, }
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');+ L/ h1 O/ S; [( h7 S
xlabel('时间t'); : X; b; r- n+ c" U# @
title('无噪声条件下解调信号的时域图');
0 R6 S) p6 C1 F, ?. X%*****************************************
5 x5 Q- h A: p% pdisp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
) U! w( r( `8 L4 ^8 G* D0 x1 O) vpause
5 q! {( j* M7 s( p- g%**************figure(4)******************
W( q1 o2 h6 J. r( V% j/ _2 hfigure(4). v4 t, V! X& X D6 e# @
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图9 o- |0 k4 R; |( e. A3 j3 ^8 @
xlabel('时间t');
) r$ K- s9 w) O Z! l; X+ Otitle('调制信号的时域图');
/ l2 C H' f3 H# h: p/ `db1=am^2/(2*(10^(sn1/10))); %计算对应的小信噪比高斯白躁声的方差
; E6 i' ]5 g) c- ^/ o3 D$ Fn1=sqrt(db1)*randn(size(t)); %生成高斯白躁声4 Y. S) l; a! I V- f( A1 T
nsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通) j X4 M6 f" X# p. E
% %过信道传输)/ p/ D6 O) f( {8 P K1 L6 G$ b4 J
for i=1:length(t)-1 %接受信号通过微分器处理
9 k( j- X, o3 f7 E8 J, i diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;. N2 y# S5 m8 L2 L
end
# Q& M8 _# F6 U4 e" sdiff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)7 D4 N. z! m; @6 R6 |+ @
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;* R. j; ~- D1 P% f
diff_nsfmn1=diff_nsfmn1-zero;# z9 Z C( E+ h( ?7 y
subplot(3,1,2); _+ T: f% H# N# B
plot(1:length(diff_nsfm),diff_nsfm); %绘制含小信噪比高斯白噪声已调信号的时域图
7 F- X. z, t$ A/ i! v U" exlabel('时间t');
. w* n/ E! P' W" dtitle('含小信噪比高斯白噪声已调信号的时域图');
0 U' I( |/ O1 r' e: N# Q% ~subplot(3,1,3); %绘制含小信噪比高斯白噪声解调信号的时域图0 m; l1 ^* W7 ^% k
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
# t- t, A# D0 E, S! Z4 W( y ]/ vxlabel('时间t');
% l: w$ b. N% s4 w5 y; a7 Ltitle('含小信噪比高斯白噪声解调信号的时域图');7 e! P& f \; D6 G8 {" u- j
%*****************************************
2 y4 y1 y) I/ k, udisp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')# I. q' O8 S( `
pause# T# m" I. r: Z$ f3 e
%**************figure(5)******************
% T. F* O) _( P1 Z8 x5 w4 ^figure(5)# u6 P; O3 K# X
subplot(3,1,1);plot(t,mt); %绘制调制信号的时域图; t% F1 I& f8 `7 K4 z8 B
xlabel('时间t');
5 w& ?% z$ n( R3 Ltitle('调制信号的时域图');
2 \1 L; }2 l2 Kdb1=am^2/(2*(10^(sn2/10))); %计算对应的大信噪比高斯白躁声的方差# u4 @5 P3 s8 {% n P/ W
n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声
2 t3 F# b( U. K1 b7 }) W& U7 @nsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通过信道传输)
" |( r9 M1 W: c6 z, tfor i=1:length(t)-1 %接受信号通过微分器处理
' ]( }! U$ t7 L3 R diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
* G; y' b6 p+ i, j9 Oend
7 Q+ K8 s- X9 C" M* m( X* K2 Hdiff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包3 L; T7 d' n# j3 D$ L
% %络检波)4 E) k; c( Z3 u3 K N% Y. L
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;) S- s: K! I; D
diff_nsfmn1=diff_nsfmn1-zero;* A. b* D% C) z( C# h
subplot(3,1,2);
6 r+ t. t6 {4 t I: j! ^0 w5 \plot(1:length(diff_nsfm1),diff_nsfm1); %绘制含大信噪比高斯白噪声已调信号
( ?& j4 y% w/ e% A; B$ e' b% %的时域图' g9 h; ? r+ `
xlabel('时间t');
& f1 F8 W# p+ k7 U8 etitle('含大信噪比高斯白噪声已调信号的时域图');
) C; T# T% N0 y9 h8 gsubplot(3,1,3); %绘制含大信噪比高斯白噪声解调信号
# F2 e7 i3 p; t/ A( H, b% %的时域图" M( g4 n) M* K* J+ ~8 p
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
/ }- z8 B" q4 T9 |xlabel('时间t');
# F; o- d$ e+ t& v9 n5 \) T$ ~title('含大信噪比高斯白噪声解调信号的时域图');" b5 D3 i( q6 n* r, A& j
%*****************************************9 R" V [" j @3 L" V
%******************结 束*******************
9 J% w$ ~8 V# @" `5 u% \& y! K0 b
3 b" |9 E0 z7 d4 u2 |5 o9 A+ S) ~
|
zan
|