用FFT做谱分析Matlab2
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二 用FFT 做谱分析
一、实验目的
1.
在理论学习的基础上,通过本实验,加深对FFT 的理解,熟悉FFT 子程序; 2.
熟悉应用FFT 对典型信号进行频谱分析的方法; 3.
了解应用FFT 对信号频谱分析过程中可能出现的问题以便在实际中正确应用FFT ; 4.
熟悉应用FFT 实现两个序列的线性卷积的方法; 5.
初步了解用周期图法作随机信号谱分析的方法; 6.
在理论学习的基础上,通过本实验,加深对DFT 的理解,熟悉DFT 子程序; 7.
掌握计算离散信号DFT 的方法; 8. 体会有限长序列DFT 与离散时间傅里叶变换DTFT 之间的联系;
9. 掌握用Matlab 进行离散傅里叶变换DFT 及其逆变换IDFT 的方法。
二、实验内容
1、已知有限长序列x(n)=[1,0.5,0,0.5,1,1,0.5,0], 要求:
(1) 用FFT 求该序列的DFT 、IDFT 的图形;
(2) 假设采样频率Fs=20Hz,序列长度长度N 分别取8、32和64,用FFT 计算其幅度频
谱和相位频谱。
2、用FFT 计算下面连续信号的频谱,并观察选择不同的采样周期Ts 和序列长度N 值对频谱特性的影响。0),2.2sin 1.2sin 2(sin )(01.0≥++=-t t t t e t x t a
3、已知有限长序列x(n)=[7,6,5,4,3,2], 求x(n)的DFT 和IDFT 。要求:
(1) 画出序列DFT 对应的|X(k)|和arg[X(k)]的图形;
(2) 画出原信号与 IDFT[X(k)]的图进行比较。
4、将第3题中的x(n)以补零方式加长到1000≤≤n ,重复第3题。
三、实现步骤
1、已知有限长序列x(n)=[1,0.5,0,0.5,1,1,0.5,0], 要求:
(1)用FFT 求该序列的DFT 、IDFT 的图形;
x=[1,0.5,0,0.5,1,1,0.5,0];
N=length(x);
n=0:N-1;
figure(1)
subplot(2,2,1.5)
stem(n,x)
title('x(n)');
n1=0:29;
y=fft(x,30);
subplot(2,2,3)
stem(n1,y)
title('DFT1');
y=ifft(x,30);
subplot(2,2,4)
stem(n1,y)
title('IDFT1'); 图1
(2)假设采样频率Fs=20Hz,序列长度长度N 分别取8、32和64,用FFT 计算其幅度频谱和相位频谱。
fs=20;T=1/fs; Tp=pi; N1=[8,32,64]; m=1; n=1:N1(m); xn=[1,0.5,0,0.5,1,1,0.5,0]; Xk=fft(xn,100); fk=[1:100]/100/T; subplot(3,2,2*m-1) stem(fk,Xk/max(abs(Xk))); subplot(3,2,2*m) stem(fk*2*pi,Xk/max(abs(Xk)));
m=2; n=1:N1(m); xn=[1,0,0,0,0.5,0,0,0,0,0,0,0,0.5,0,0,0,1,0,0,0,1,0,0,0,0.5,0,0,0,0,0,0,0]; Xk=fft(xn,100); fk=[1:100]/100/T;
subplot(3,2,2*m-1)
stem(fk,Xk/max(abs(Xk))); subplot(3,2,2*m)
stem(fk*2*pi,Xk/max(abs(Xk)));
m=3;
n=1:N1(m);
xn=[1,0,0,0,0,0,0,0,0,0.5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.5,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0.5,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]; Xk=fft(xn,100);
fk=[1:100]/100/T;
subplot(3,2,2*m-1)
stem(fk,Xk/max(abs(Xk))); subplot(3,2,2*m)
stem(fk*2*pi,Xk/max(abs(Xk)));
图2
2、用FFT 计算下面连续信号的频谱,并观察选择不同的采样周期Ts 和序列长度N 值对频谱特性的影响。
0),2.2sin 1.2sin 2(sin )(01.0≥++=-t t t t e t x t a
fs=2;T=1/fs;
Tp=pi;N=Tp*fs;
N1=[N,4*N,8*N];
st=['|X1(jf)|';'|X4(jf)|';'|X8(jf)|'];
for m=1:3
n=1:N1(m);
xn=exp(-0.01*n*T).*(sin(2*n*T)+sin(2.1*n*T)+sin(2.2*n*T));
Xk=fft(xn,100);
fk=[1:100]/100/T;
subplot(3,2,2*m-1)
plot(fk,abs(Xk)/max(abs(Xk)));
ylabel(st(m,:));
end
fs=[2 4 8];T=1./fs;
Tp=pi;N=4*pi;
st=['fs=2';'fs=4';'fs=8'];
for m=1:3
n=1:N;
xn=exp(-0.01*n*T(m)).*(sin(2*n*T(m))+sin(2.1*n*T(m))+sin(2.2*n*T( m)));
Xk=fft(xn,100);
fk=[1:100]/100/T(m);
subplot(3,2,2*m)
plot(fk,abs(Xk)/max(abs(Xk)));
axis([0,8,0,1]);
ylabel(st(m,:));
end
图3
3、已知有限长序列x(n)=[7,6,5,4,3,2], 求x(n)的DFT 和IDFT。要求:
(1)画出序列DFT对应的|X(k)|和arg[X(k)]的图形;
(2)画出原信号与IDFT[X(k)]的图进行比较。
x=[7,6,5,4,3,2]; N=length(x);
n=0:N-1;subplot(4,2,1.5) stem(n,x)
title('x(n)');