- 在线时间
- 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
7 F9 d; R2 L m. X/ T% H%频率调制与解调的Matlab演示源程序
& [+ Y1 H: q3 M! w6 y%可以任意改原调制信号函数m(t)
9 y, ~# ]0 I# z8 C; ?. N" ^! L%电子信息工程 杜怀超 091308305
& ?. K" l. w8 r2 h6 [%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·7 h* ?+ G! l+ v4 n
%*****************初始化******************/ o4 n1 f7 `: O" g% r y* A
echo off ' m+ Y1 a% D( j* _8 u! s6 a. i2 L- {/ @
close all& ^# b! r$ q5 I3 {* o1 H
clear all
; o: o! G; E4 O4 Jclc
; d1 W9 ]7 `9 y; e! T( `! @$ ?4 v%*****************************************, f, I$ Y0 L6 p( Q- B
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
5 v+ X8 g# x" T0 G# F%****************FM调制*******************8 u4 c5 x( Y5 V1 l- d
dt=0.001; %设定时间步长& F/ [0 Z* u: Y$ O. c2 ?# ~
t=0:dt:1.5; %产生时间向量 r" P4 Q% Y4 w5 E" U6 W, [
am=5; %设定调制信号幅度
# u) \: d3 Q2 @9 E1 ffm=5; %设定调制信号频率 o" N. H# _0 I" r
mt=am*cos(2*pi*fm*t); %生成调制信号3 P7 E4 i: C: S! c8 g. i
fc=50; %设定载波频率
. O( ]$ M' _: l5 Qct=cos(2*pi*fc*t); %生成载波9 N" W) c* ~$ m
kf=10; %设定调频指数2 d' j C3 L) v# g# y* ]4 C9 e
int_mt(1)=0;
6 y6 M7 N0 X# L2 y+ zfor i=1:length(t)-1 8 E1 N4 d4 _" I4 Z
int_mt(i+1)=int_mt(i)+mt(i)*dt; %求信号m(t)的积分
: o* b. }- A4 [6 h5 H- v" Uend %调制,产生已调信号- v# z7 ~3 I: H0 y8 E0 C' y# ~
sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt); %调制信号# l8 S1 ^9 o6 [$ L" Z& _
%*****************************************. c- ~; i T# B) C. e& b
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·- j+ |! A7 D8 F5 D. [
%*************添加高斯白噪声**************
( A$ ?, h$ S* ?6 Nsn1=10; %设定信躁比(小信噪比)0 t; ]' i% X) b& g* t
sn2=30; %设定信躁比(大信噪比)
* N8 y# B7 A6 r$ H8 msn=0; %设定信躁比(无信噪比)
/ T( Q0 K: Z- l2 kdb=am^2/(2*(10^(sn/10))); %计算对应的高斯白躁声的方差' h d3 {* U3 g _, b
n=sqrt(db)*randn(size(t)); %生成高斯白躁声
0 O* Y' Y' C4 ?/ Z5 g+ J) snsfm=n+sfm; %生成含高斯白躁声的已调信号(信号通* ^2 N( ^1 d& G/ y7 z
%过信道传输), G/ R' b$ @0 y7 q6 Q6 P! w, @
%*****************************************9 @ M9 }3 s" |3 }. d
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
4 A& I" I& h4 l- S%****************FM解调*******************
. P% t3 C% M! Y3 F: E: ~for i=1:length(t)-1 %接受信号通过微分器处理
1 D+ }9 ], V+ q/ ? diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;2 Q1 v% }: E, Q3 }8 z; ?% \. V
end3 ^% d+ J7 P) Y6 @2 z; v
diff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波); G; J0 p- r+ K& m9 w
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;; |6 p8 f; C7 m) B3 S- C- l
diff_nsfmn1=diff_nsfmn-zero;) ]) J- e( k& T& o' q, c- A2 B
%*****************************************1 u8 R8 Y; a- ~2 ?0 G' j) ~
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·9 h" s, q, {7 I2 F) @/ Z
%**************时域到频域转换**************
) `' q/ l: e2 Bts=0.001; %抽样间隔
) {# m# ^# O* O( U( }4 l% }fs=1/ts; %抽样频率5 H: z- J0 k8 j! e8 x! ~
df=0.25; %所需的频率分辨率,用在求傅里叶变换
1 V8 z5 \% O, `* I! u% 时,它表示FFT的最小频率间隔
* a7 b' s4 ^5 _%*****对调制信号m(t)求傅里叶变换*****
' W, O4 T& ? a j- Nm=am*cos(2*pi*fm*t); %原调信号
( ^( b1 w9 |- qfs=1/ts; }1 s1 G! P* g2 w5 j
if nargin==2. }) l0 _9 |; e9 B
n1=0;
7 l9 @: J% r. k3 K! c& \% G Qelse
o% G" ^+ c. X3 D& }+ H n1=fs/df;% c2 P$ d/ r7 w- \" A$ T2 o+ P% b
end8 R2 y# Y& M; y9 t6 ? A$ \( B. {
n2=length(m);' N4 p& A- W8 y) ^, u
n=2^(max(nextpow2(n1),nextpow2(n2)));1 o4 j, g* g2 ^
M=fft(m,n);9 @, ]' s7 ?/ I+ H5 Y& D2 z# l
m=[m,zeros(1,n-n2)];
# O' n1 g" Q. {0 y2 I" ^df1=fs/n; %以上程序是对调制后的信号u求傅里变换0 M7 d0 H f8 c" L3 M
M=M/fs; %缩放,便于在频铺图上整体观察
6 y+ b8 t, ?: M8 y) s q `f=[0:df1:df1*(length(m)-1)]-fs/2; %时间向量对应的频率向量) H. Z, r9 `7 V$ I: {) g
; O( I7 x6 Y. j% E%************对已调信号u求傅里变换**********
8 v3 e% C, u+ _4 b8 yfs=1/ts;
$ G8 A) r% x/ Lif nargin==2: f4 a3 c- _6 q' H2 ^ q
n1=0;
! z4 v; P0 d" m2 N4 o& U* delse' @$ z8 c$ g ^+ I' K- e
n1=fs/df;8 L# e% ]6 Q# b* {! k u$ I
end9 p. O" n7 X" n% j
n2=length(sfm);: i. p: R2 j+ G. a) W4 T. B1 C
n=2^(max(nextpow2(n1),nextpow2(n2)));2 K( p, r- Q2 c9 F) V0 e$ s. Y
U=fft(sfm,n);
' ?; J6 i% G" Cu=[sfm,zeros(1,n-n2)];' \8 E7 p* h& l( x& U5 _% ~
df1=fs/n; %以上是对已调信号u求傅里变换3 ~( M- U( R# L4 h) v# g* b
U=U/fs; %缩放
; \3 ]& W" ~- D1 U: Q2 j( {%******************************************
! n% o& B7 O7 R! r/ q%*****************************************$ q W i3 {3 g4 i" U1 [
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
/ F1 t6 E3 L0 A+ q# y- |%***************显示程序******************
3 {; T T7 s) Rdisp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')" o1 R+ C& A( C! f9 Q1 a
pause
/ l( ]" R, s3 }# [" [/ Z%**************figure(1)******************9 t7 o; P E; G: f/ Q: T# |
figure(1)
, W( f. {* d& q3 D8 asubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
l( d; x1 n2 V! f: J: U7 Y' ?xlabel('时间t');' \3 I& c6 I+ f' d8 g) _
title('调制信号的时域图');
9 S$ E3 R3 c/ b) {3 ~, dsubplot(3,1,2);plot(t,ct); %绘制载波的时域图
" W/ ?& q0 M* ? ~: Z5 J, T, rxlabel('时间t');! ~& F$ i! |) q
title('载波的时域图');
0 J* b5 @! q2 s/ W, x- Y8 vsubplot(3,1,3);
3 a* F$ M4 ?7 }! ~plot(t,sfm); %绘制已调信号的时域图
- k- i; O& U! Q% R: rxlabel('时间t');$ h6 q! D9 b' c3 U% ^2 G
title('已调信号的时域图');
3 Y6 W* H% X Z: B/ M$ X%******************************************9 O* l2 [, }8 O7 [! o0 I* O) o
disp('按任意键可以看到原调制信号和已调信号在频域内的图形'); n( ~6 a1 d- Z0 k, B9 d; H3 [/ b
pause; S' E' @4 s; q# D7 q- u0 }
%************figure(2)*********************) j8 o d8 r3 o. i
figure(2)
, M' K* e0 w* \( V. I; wsubplot(2,1,1)
; u# s) R. [5 i& p3 Pplot(f,abs(fftshift(M))) %fftshift:将FFT中的DC分量移到频谱中心
* h: `4 I* c, A! X- A$ txlabel('频率f')
( e7 s# }" h- o* f. Ytitle('原调制信号的频谱图')
$ h1 Z! P" [; N/ Xsubplot(2,1,2)
. r- p9 | C9 w! v" G3 w1 ?plot(f,abs(fftshift(U)))! M% w; M1 F" b, t
xlabel('频率f')8 ?/ A, U5 L4 ^' F* H0 Z& X q
title('已调信号的频谱图')
0 T1 f: e- m. W% v. K- t%******************************************
: e$ D7 ^4 g6 n7 J0 }disp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')
7 C; ]2 |# b3 o* T' L ~pause
# V; R5 X4 N& I" s) y. ~9 E. [+ `%**************figure(3)******************
$ w$ k. \0 ~6 f! O1 n1 c( ~figure(3)
/ o0 N4 S1 I+ |& ]3 w1 c5 msubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
+ G( @5 w. X3 S2 X% P9 `# Xxlabel('时间t');
2 X$ l: [3 u" Rtitle('调制信号的时域图');
8 e w: J5 V9 @: t+ x( Ksubplot(3,1,2);plot(t,sfm); %绘制已调信号的时域图9 }; k7 L* j! z2 J5 Y
xlabel('时间t');
6 S4 o2 \6 ^4 t4 w/ m e- H5 Jtitle('无噪声条件下已调信号的时域图');& b' q3 j- H, k) E; \0 [
nsfm=sfm; - {) N7 X; q; X. Y( f( r0 S
for i=1:length(t)-1 %接受信号通过微分器处理
4 n9 Q0 l' N7 z* N! ]! p diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
9 `) G z( [# H4 j# V' y) vend$ }/ ?% q4 ?! H7 _$ y
diff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)8 c+ y# F1 y' q1 \
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
0 n) d4 O6 E& g) r+ Rdiff_nsfmn1=diff_nsfmn-zero;% S! G8 s8 Q8 S8 }- ~3 Q
subplot(3,1,3); %绘制无噪声条件下解调信号的时域图8 @7 C$ H1 r3 H% ^1 t8 ^0 j$ H
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
8 i& z; [. r" p. Sxlabel('时间t');
0 X( N2 N, Y* n' q: n2 F* l% Utitle('无噪声条件下解调信号的时域图');( N' V0 a+ n2 F# S8 j7 J
%*****************************************
+ K, ?$ @: k/ R2 s9 ?disp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
% p5 U/ I' S4 t3 f9 H+ k% M6 Opause
* m0 u' F, ^( U/ I, i; d7 a- K%**************figure(4)******************7 u: Q4 n% `5 y6 C
figure(4)
0 p1 e( l$ B; B+ \/ m, F/ V+ dsubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
5 J& |2 c- Y B( H5 h& i8 [ Ixlabel('时间t'); T( o4 C- b/ W5 C5 I" L
title('调制信号的时域图');% O7 r2 h9 G4 g8 p; t6 L( X5 Q+ O* ?
db1=am^2/(2*(10^(sn1/10))); %计算对应的小信噪比高斯白躁声的方差" v1 s5 y/ f" b; I/ ~
n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声
5 T1 c/ Y, S( u; vnsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通
' u% V. P& u7 ^* f1 p% %过信道传输)
7 d$ |1 B+ d' m+ ^8 S7 A. V( R( ffor i=1:length(t)-1 %接受信号通过微分器处理
' w/ c: b1 J# } diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
U5 F- j6 W! b- c7 E7 uend# X8 m; ~9 F( ~8 e% k: y
diff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)0 I @0 q! [; \6 n+ g6 e
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
- W7 b, f7 b% Q" J8 ~) V! Mdiff_nsfmn1=diff_nsfmn1-zero;
. s1 W: S. @( K; `subplot(3,1,2);
7 \/ Z) t( P+ y$ z/ Q6 Q; Bplot(1:length(diff_nsfm),diff_nsfm); %绘制含小信噪比高斯白噪声已调信号的时域图
$ {& T; S, p( }* O: I" exlabel('时间t');
; s' p: y6 e# gtitle('含小信噪比高斯白噪声已调信号的时域图');
7 Z! G1 B8 G, }1 osubplot(3,1,3); %绘制含小信噪比高斯白噪声解调信号的时域图
) U3 J3 Z" N g9 @5 _plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');1 f1 G1 y$ X5 c [
xlabel('时间t');
+ z b; u8 n( Z# k3 o- {title('含小信噪比高斯白噪声解调信号的时域图');1 ~3 v2 f5 z8 j
%*****************************************
$ i$ ~- a' q( [& b) j5 a2 [disp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线'); c9 M1 t% j* V/ ]+ u$ L% f3 e) U+ o1 x
pause" x# |$ M, _$ F. k* z6 m% q
%**************figure(5)******************
( D& t+ b# \5 d& Z# J5 rfigure(5)
! F* a! }1 W, T, ksubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图) S! {$ e" Z* ~
xlabel('时间t');
) {; o- J) h# W4 @2 ftitle('调制信号的时域图');
) ~8 ?; J9 U0 J" edb1=am^2/(2*(10^(sn2/10))); %计算对应的大信噪比高斯白躁声的方差/ c5 s7 u/ O Q7 D; z# L
n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声
6 p) i2 L- l& [/ ]. P9 rnsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通过信道传输)( f2 j0 l0 o# c: s, a
for i=1:length(t)-1 %接受信号通过微分器处理
. J$ Q4 k' {% X; y& @1 k diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;. F& Y0 B: ]( ~( A
end
& i0 ]; C! ^4 zdiff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包
5 S! K3 A' a( D8 U& z, J% %络检波); Y) d( Y' B' w
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;9 Q* e8 Y- Z5 y ~- m
diff_nsfmn1=diff_nsfmn1-zero;
( j; f: `! P5 t Z9 W! {8 rsubplot(3,1,2);
5 }" g% `& H8 N( e& E/ yplot(1:length(diff_nsfm1),diff_nsfm1); %绘制含大信噪比高斯白噪声已调信号* Y5 a C6 d$ u4 w1 s
% %的时域图- D; y, @' k* I: e9 N2 A
xlabel('时间t');9 r8 h# f& c; f! P* {2 O# z
title('含大信噪比高斯白噪声已调信号的时域图');
2 y+ E- @5 A8 P8 F6 X$ Dsubplot(3,1,3); %绘制含大信噪比高斯白噪声解调信号% P/ e) u* b& \
% %的时域图$ ]- Y: o* Y, @2 ~3 N
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
! p# L' S) b7 q- N& [: f& j9 xxlabel('时间t'); : w% ]& @* K9 c' S+ j7 \4 ?
title('含大信噪比高斯白噪声解调信号的时域图');1 T# i0 ?, p% P8 W w% B+ [3 }
%*****************************************
! l2 P+ @/ N7 T0 w%******************结 束*******************
- w4 m* K: W& `1 @! r* S3 V
6 q: y% t/ {: B
; V; Y& y0 w5 f, h! B# y5 _ |
zan
|