- 在线时间
- 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
/ }2 ^/ U0 f/ b& c& c! [%频率调制与解调的Matlab演示源程序& C+ g6 R. E& ^; B+ i
%可以任意改原调制信号函数m(t)5 t3 ^2 Z. o& o. M" j
%电子信息工程 杜怀超 091308305 - i! A( Z/ x+ n- ?3 Z
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
{$ ~. b/ ~, |9 t%*****************初始化******************: o$ N, e* f; c+ a: j% f; G1 u8 D
echo off
0 Y/ M' y0 ?6 Qclose all
5 l4 J0 J# r; aclear all
2 ~, o( A% x6 G( {clc: N$ V0 l6 y: {! k, y4 S- I
%*****************************************! w; e* ^$ G9 \+ o9 |
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·# C. M( h& s8 q, c
%****************FM调制*******************
- r9 ~+ m/ O' Z6 y& Q/ k+ cdt=0.001; %设定时间步长8 b$ m: x1 H' `! W3 Y1 |
t=0:dt:1.5; %产生时间向量- p; |" m3 d/ [$ i# W
am=5; %设定调制信号幅度
- O- I9 |* U) ] y2 mfm=5; %设定调制信号频率6 `" j5 B! b! l E
mt=am*cos(2*pi*fm*t); %生成调制信号# v5 }) q7 R5 a' B4 @7 u
fc=50; %设定载波频率! H4 L2 {9 P2 P! _
ct=cos(2*pi*fc*t); %生成载波6 Q9 ~. k# n# ]- e& v
kf=10; %设定调频指数
" U: P, Q& x: [* uint_mt(1)=0;
7 w% X( l- v* d' f; \5 O" bfor i=1:length(t)-1
2 m' T I% k. j/ z$ Q int_mt(i+1)=int_mt(i)+mt(i)*dt; %求信号m(t)的积分 b0 @; C; W; c5 g6 c# J" N
end %调制,产生已调信号+ a$ ?# l) v; r( U) F$ K
sfm=am*cos(2*pi*fc*t+2*pi*kf*int_mt); %调制信号
4 J; r: P! |! p& N%*****************************************7 ~. ]' u& c' r
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
; g c" y) }, q! U$ @%*************添加高斯白噪声**************0 ^# M3 R, f8 N; U3 W
sn1=10; %设定信躁比(小信噪比) I! `8 z, {" z" e' Y1 s
sn2=30; %设定信躁比(大信噪比)1 {* ^+ @. M3 Z; g
sn=0; %设定信躁比(无信噪比)
" _% v) q& g) M8 Z# `* n! Jdb=am^2/(2*(10^(sn/10))); %计算对应的高斯白躁声的方差5 e4 H* \6 b- A% B* _; M
n=sqrt(db)*randn(size(t)); %生成高斯白躁声
+ ^. C; z5 ]4 P: s/ N7 ]: [nsfm=n+sfm; %生成含高斯白躁声的已调信号(信号通
2 `' x( C8 r. W; E2 z; a# V%过信道传输)
( c% N' \2 Z! n- j9 h" l& U%*****************************************
7 S1 S) W# u. k3 S3 S3 W%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·5 C! E. F# \! z6 l' A- K
%****************FM解调*******************# k% ]4 l2 i$ m
for i=1:length(t)-1 %接受信号通过微分器处理0 I5 @& c* c+ c' O
diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;$ y; V2 f% e/ i1 b0 z
end
3 _: C) K, m( |$ E0 Y2 R7 G$ O7 `diff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波)
1 b4 D1 V" i4 X; s& H4 ]7 azero=(max(diff_nsfmn)-min(diff_nsfmn))/2;2 g9 d; m2 ]1 m( @1 h1 O2 }- Z8 f: I
diff_nsfmn1=diff_nsfmn-zero;9 B7 q9 Y; v% L0 `1 e
%*****************************************9 E4 u J: d- _1 d7 t
%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·
8 Y/ r) F6 |+ Q. T. j%**************时域到频域转换**************
& S: `5 y6 X' `: Uts=0.001; %抽样间隔2 U! H- E# D# m$ g2 I
fs=1/ts; %抽样频率' ?' |. U! @* r9 V: y
df=0.25; %所需的频率分辨率,用在求傅里叶变换
t: h7 W; R9 P0 a- Q* {, m% 时,它表示FFT的最小频率间隔
. M; ]! C" t$ F! W%*****对调制信号m(t)求傅里叶变换*****
3 @1 ?; ? c" F9 y/ e( k% {9 pm=am*cos(2*pi*fm*t); %原调信号
7 ]/ d% b1 w9 o+ \5 O, Z' v4 j, m% Pfs=1/ts;; o7 `% X* J! F y. y
if nargin==2
* o ~; l3 M* n9 j% ] n1=0;
9 L% o" ^2 [' m+ s% | jelse7 {' d, i% ]7 e5 Z, H
n1=fs/df;* O' D5 P! X6 _$ G8 g
end- E9 H5 O, ]' Y" a8 \0 E
n2=length(m);
5 s- `' ~' C# d# I# G+ n7 k4 ]n=2^(max(nextpow2(n1),nextpow2(n2)));8 {* a( @) U) d* s
M=fft(m,n);
! p) E* d1 _* n4 o7 e* n% ?0 c# r; }m=[m,zeros(1,n-n2)];2 S3 I3 Z' ?9 b" x
df1=fs/n; %以上程序是对调制后的信号u求傅里变换8 P4 c* z' p( x5 C# h* a: w! d
M=M/fs; %缩放,便于在频铺图上整体观察. P0 Z/ g( F% X8 T6 a- _
f=[0:df1:df1*(length(m)-1)]-fs/2; %时间向量对应的频率向量
2 h/ e$ k3 o5 B4 e2 c! Q' o" ^& I# c, q2 `. t! I
%************对已调信号u求傅里变换**********5 W$ J; a: s1 A$ u- h
fs=1/ts;" m! S% Z `! @1 e9 l
if nargin==2+ S4 g+ N4 N2 E& c( y
n1=0;2 B$ y7 e$ q ~7 Y W/ Q
else
7 N6 R; e, G5 `$ |9 S n1=fs/df;2 Q1 ~2 B4 B3 ]. k& O
end& V& V6 @' @# ~$ Y; J
n2=length(sfm);
/ D' i1 h Y5 _1 A1 V% Wn=2^(max(nextpow2(n1),nextpow2(n2)));0 I7 a$ l* \, j- t3 I
U=fft(sfm,n);
* z0 @* V# e" A$ w% p+ \" ?. m; Cu=[sfm,zeros(1,n-n2)];
- z8 V+ Q+ P K# l+ edf1=fs/n; %以上是对已调信号u求傅里变换
2 f2 y2 f7 \" b7 QU=U/fs; %缩放
6 g# R' J4 R+ m& B%******************************************8 q' Q& D% [: Q3 ]1 W
%*****************************************
+ E m7 I( s5 r5 t( p%·*·*·*·*·*·*·*·*·*·*·*·*·*·*·*·2 C4 D, y* E+ m( n: G% A
%***************显示程序******************! q4 p, M5 G7 H$ i$ @% b6 c: ^
disp('按任意键可以看到原调制信号、载波信号和已调信号的曲线')0 }0 j7 o# N: _5 d) U' F
pause
W9 z/ Y4 J. E. Y2 A%**************figure(1)******************" N) s2 u4 p' r3 P8 l" o
figure(1)
* h U# I$ n% R$ |6 Asubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
' D+ ^! `2 O" F9 g3 ?8 n- zxlabel('时间t');& I0 x! }; q! p; f g8 |# O
title('调制信号的时域图'); k( ^, y! `) s9 x
subplot(3,1,2);plot(t,ct); %绘制载波的时域图
: p6 J/ ?5 j% C5 ]: x& R% V( Uxlabel('时间t');
# s: Z4 y0 k$ t9 ftitle('载波的时域图');) |) |) ]# | b- J# {
subplot(3,1,3);
1 `$ v% U+ P) I0 m6 d4 N* bplot(t,sfm); %绘制已调信号的时域图" ] y- l, b- k) y& y
xlabel('时间t');: m8 b4 R, q% i% L# F& ?6 i$ }
title('已调信号的时域图');
/ z. {" `. n' C%******************************************
, v, {- S; v7 q/ b, ldisp('按任意键可以看到原调制信号和已调信号在频域内的图形')
1 p5 I& `6 x9 e, l4 O2 a: X7 @pause
# V9 p8 s3 y! t1 w2 J; `6 n%************figure(2)*********************$ v' a$ {( G9 v W+ V
figure(2)
, e) o8 R4 a+ isubplot(2,1,1)
' k- y) ]: G" G1 y" Wplot(f,abs(fftshift(M))) %fftshift:将FFT中的DC分量移到频谱中心7 s9 ^! x i: @- h. o7 T1 L. t
xlabel('频率f')
' O3 p4 N L6 j# C+ y% a0 ~title('原调制信号的频谱图')( n7 k* x1 t2 k# {# |( e t! l- k
subplot(2,1,2)
7 D; _% y) ~ Yplot(f,abs(fftshift(U)))
& q" N) k6 ` A5 `- |xlabel('频率f')
2 o0 w4 P& t7 ~ n' x5 E. Atitle('已调信号的频谱图') m4 e; k$ u2 W, t4 m# [8 c/ P! g
%******************************************
' e# {* J" R* \; z9 K* Pdisp('按任意键可以看到原调制信号、无噪声条件下已调信号和解调信号的曲线')% I$ G4 k6 M) Y1 K& L
pause# ]8 f- B9 b0 l6 u/ ?$ J; Q
%**************figure(3)******************
7 N" k( N; X) H6 `figure(3)
0 D! i p N0 A1 T- |, a, ksubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图* c, R+ K( ?5 K3 m0 y
xlabel('时间t');
O) u( C7 h3 i) R! ?title('调制信号的时域图');
: s: x; e* C1 v0 R9 ksubplot(3,1,2);plot(t,sfm); %绘制已调信号的时域图9 l+ U; c x$ N7 I6 z
xlabel('时间t'); |- u# [* U, r: t7 ^) R6 _% C) Q
title('无噪声条件下已调信号的时域图');- s1 m$ C3 y; ? o' q+ f6 q# S4 {% |( h
nsfm=sfm;
( ]! ?* t& F. P1 X8 c Afor i=1:length(t)-1 %接受信号通过微分器处理
" x+ ]% a; h+ S% f& c diff_nsfm(i)=(nsfm(i+1)-nsfm(i))./dt;
* R' @/ x% r0 w: g' Z. C" E; G. n7 Bend% r9 `9 Q* o8 e' w' ^" t
diff_nsfmn = abs(hilbert(diff_nsfm)); %hilbert变换,求绝对值得到瞬时幅度(包络检波), ]# B: R9 X( r
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;1 k2 d. d+ g$ s2 f$ x0 k% B" A
diff_nsfmn1=diff_nsfmn-zero;4 [% F8 j5 P- Z! d
subplot(3,1,3); %绘制无噪声条件下解调信号的时域图- T9 I; v! x& m# X
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');9 I: t! ^5 _ Y( @4 ~# m
xlabel('时间t');
# g7 f. ` V2 W2 ?. J8 c7 Jtitle('无噪声条件下解调信号的时域图');
( g( g: z' e2 M$ ]# M8 t! d9 L C7 o* j%*****************************************0 b3 z* T; M9 K& i9 W/ W0 E6 C
disp('按任意键可以看到原调制信号、小信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')% a6 W# W% }4 H! i* H9 @( N
pause* S, M6 d! F" t: g: `
%**************figure(4)******************. D9 w. l& j9 i* A1 T5 [- M2 f/ B
figure(4)
" o) ^6 b5 K( G. }0 A3 T. _! k6 xsubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
$ Z' L- d9 C1 ^ X1 ?1 @' gxlabel('时间t');
" A0 W" l4 I% `' Q7 s, Rtitle('调制信号的时域图');
0 o; B9 j; `' N& u7 kdb1=am^2/(2*(10^(sn1/10))); %计算对应的小信噪比高斯白躁声的方差
. V; Y6 \& Z( }4 N0 q( _n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声( t& o% |7 Y7 `. v
nsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通 c2 h5 g% [" ~4 Z+ f
% %过信道传输)
# M) c! l+ j: P7 u# c0 Gfor i=1:length(t)-1 %接受信号通过微分器处理
/ B4 S- y; }) \ diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
7 [: c8 W" A# q8 p ], S# Eend g" q1 j5 ~* B3 W
diff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包络检波): _) b. M( k! N/ H/ G
zero=(max(diff_nsfmn)-min(diff_nsfmn))/2;
9 F" G8 I5 m$ p' F/ I: Q) ~- hdiff_nsfmn1=diff_nsfmn1-zero;
. n# X: [/ X, j3 u5 R8 fsubplot(3,1,2);
8 V8 R. ] Z9 N0 L+ Uplot(1:length(diff_nsfm),diff_nsfm); %绘制含小信噪比高斯白噪声已调信号的时域图
% y: i9 b8 {( pxlabel('时间t');% H- i) J6 D8 i
title('含小信噪比高斯白噪声已调信号的时域图');2 V) Q% {; ~+ j+ L
subplot(3,1,3); %绘制含小信噪比高斯白噪声解调信号的时域图; A- J$ x$ G# ~$ m
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');' _& @3 F9 h- y/ n2 D5 l
xlabel('时间t'); 0 }1 Q) I' u' P5 Q/ Z
title('含小信噪比高斯白噪声解调信号的时域图');- I! b7 {% @1 A
%*****************************************
* ]( H. N9 Y6 ?4 k+ A9 N W Kdisp('按任意键可以看到原调制信号、大信噪比高斯白噪声条件下已调信号和解调信号已调信号的曲线')
, | |+ L9 g, L( r; spause
2 k0 ^; Q0 A, a7 m) h- J+ B%**************figure(5)******************
5 m! B2 t- m. C: B wfigure(5)
% E! h% }, `6 d. Hsubplot(3,1,1);plot(t,mt); %绘制调制信号的时域图
4 N' t, D3 G1 L# axlabel('时间t');
7 l \8 H/ W- i$ Dtitle('调制信号的时域图');# P0 t% }! p5 g3 s4 J6 c9 c
db1=am^2/(2*(10^(sn2/10))); %计算对应的大信噪比高斯白躁声的方差2 J: ?5 Y1 D) s0 `6 K1 E/ `- r
n1=sqrt(db1)*randn(size(t)); %生成高斯白躁声) I! U1 E+ W: v) Q, a1 o6 w
nsfm1=n1+sfm; %生成含高斯白躁声的已调信号(信号通过信道传输)
1 v- v6 q5 b- Wfor i=1:length(t)-1 %接受信号通过微分器处理
9 Y4 e- y) x9 \5 W diff_nsfm1(i)=(nsfm1(i+1)-nsfm1(i))./dt;
. p7 h/ N. J$ H$ }end
# I# v8 [( ~* ~* udiff_nsfmn1 = abs(hilbert(diff_nsfm1)); %hilbert变换,求绝对值得到瞬时幅度(包8 c4 w4 Z0 y) ]
% %络检波)
2 Q8 F3 f, u K7 czero=(max(diff_nsfmn)-min(diff_nsfmn))/2;6 q, g6 s& F4 |* @6 f
diff_nsfmn1=diff_nsfmn1-zero;! U' G+ Y ?5 {2 `: G
subplot(3,1,2);$ U$ {3 O* t9 t1 t$ t8 B
plot(1:length(diff_nsfm1),diff_nsfm1); %绘制含大信噪比高斯白噪声已调信号! b, c. B+ R( y: F; G7 ]9 ^4 E
% %的时域图
, R6 x, U8 O8 ixlabel('时间t');
0 x# r$ T' X( P- F- X) htitle('含大信噪比高斯白噪声已调信号的时域图');! D# \2 I% m5 m; `1 V) ?
subplot(3,1,3); %绘制含大信噪比高斯白噪声解调信号
" S' e w+ [6 k2 q2 q. x, f, h% %的时域图+ ~+ W) V0 O+ D* [* ^
plot((1:length(diff_nsfmn1))./1000,diff_nsfmn1./400,'r');
; e) K3 I; ^0 ~% _0 yxlabel('时间t'); : b5 `) n" n' w
title('含大信噪比高斯白噪声解调信号的时域图');, s. k2 ?: Z4 E5 M' i; Q
%*****************************************
$ I0 F. Y) j# ~4 P0 h7 M%******************结 束*******************; m' ?, V6 X6 J" }+ f% e
' W2 e+ x: z" J* ]! I
9 `( b+ x) \ {& A |
zan
|