应用快速傅里叶变换对信号进行频谱分析实验报告.docx
《应用快速傅里叶变换对信号进行频谱分析实验报告.docx》由会员分享,可在线阅读,更多相关《应用快速傅里叶变换对信号进行频谱分析实验报告.docx(19页珍藏版)》请在冰豆网上搜索。
![应用快速傅里叶变换对信号进行频谱分析实验报告.docx](https://file1.bdocx.com/fileroot1/2023-7/22/c1f91880-6878-4418-b55d-098178b22bfd/c1f91880-6878-4418-b55d-098178b22bfd1.gif)
应用快速傅里叶变换对信号进行频谱分析实验报告
应用快速傅里叶变换对信号进行频谱分析
2.1实验目的
1、通过本实验,进一步加深对DFT算法原理和基本性质的理解,熟悉FFT算法原理和FFT子程序应用
2、掌握应用FFT对信号进行频谱分析的方法。
3、通过本次实验进一步掌握频域采样定理。
4、了解应用FFT进行信号频谱分析过程中可能出现的问题,以便在实际中正。
确应用FFT。
2.2实验原理与方法
对于有限长序列我们可以使用离散傅里叶变换(DFT)。
这一变换不但可以好地反映序列的频域特性,而且易于用快速傅里叶变换在计算机上实现
当序列x(n)的长度为N时,它的离散傅里叶变换为:
其中
,它的反变换定义为:
比较Z变换公式,令
则
因此有
。
所以,X(k)是x(n)的Z变换在单位圆上的等距采样,或者说是序列傅里叶变换的等距采样。
DFT是对序列傅里叶变换的等距采样,因此可以用于对序列的频谱分析。
在运用DFT进行频谱分析的过程中有可能产生三种误差:
1、混叠现象
序列的频谱是原模拟信号频谱的周期延拓,周期为
。
因此,当采样频率小于两倍信号的最大频率时,经过采样就会发生频谱混叠,使采样后的信号序列频谱不能真实反映原信号的频谱。
2、泄漏现象
实际中信号序列往往很长,常用截短的序列来近似它们,这样可以用较短的DFT对信号进行频谱分析,这种截短等价于给原信号序列乘以一个矩形函数。
这样得到的频谱会将原频谱扩展开。
3、栅栏效应
DFT是对单位圆上Z变换的均匀采样,所以它不可能将频谱视为一个连续函数。
因此,只能看到离散点无法看出真实频谱。
2.3实验内容及步骤
1、观察高斯序列的时域和幅频特性
(1)固定信号
中参数p=16,信号长度N=32,改变q的值,分别等于2,10,30,观察他们的时域和幅频特性(作FFT时,点数大于256),了解当q取不同的值时,对信号序列的时域和幅频特性的影响。
MATLAB程序:
N=32;FFTN=256;p=16;q1=2;q2=10;q3=30;
n=0:
N-1;
xa1=exp(-((n-p).^2/q1));
ya1=fft(xa1,FFTN);
figure
(1);
subplot(2,1,1);stem(n,xa1,'.');
subplot(2,1,2);stem(ya1,'.');
xa2=exp(-((n-p).^2/q2));
ya2=fft(xa2,FFTN);
figure
(2);
subplot(2,1,1);stem(n,xa2,'.');
subplot(2,1,2);stem(ya2,'.');
xa3=exp(-((n-p).^2/q3));
ya3=fft(xa3,FFTN);
figure(3);
subplot(2,1,1);stem(n,xa3,'.');
subplot(2,1,2);stem(ya3,'.');
运行结果:
结论:
p固定时,随着q的改变,时域波形变化缓慢,低频分量增加,频谱泄露和混叠减小。
(2)固定q=10,改变p,使p分别等于25,30,32,观察参数p变化对信号序列的时域及幅频特性的影响,注意p等于多少时,会发生明显的泄露现象,混叠是否也随之出现?
MATLAB程序:
N=32;q=10;p1=25;p2=30;p3=32;FFTN=256;
n=0:
N-1;
xa1=exp(-((n-p1).^2/q));
ya1=fft(xa1,FFTN);
figure
(1);
subplot(2,1,1);stem(n,xa1,'.');
subplot(2,1,2);stem(ya1,'.');
xa2=exp(-((n-p2).^2/q));
ya2=fft(xa2,FFTN);
figure
(2);
subplot(2,1,1);stem(n,xa2,'.');
subplot(2,1,2);stem(ya2,'.');
xa3=exp(-((n-p3).^2/q));
ya3=fft(xa3,FFTN);
figure(3);
subplot(2,1,1);stem(n,xa3,'.');
subplot(2,1,2);stem(ya3,'.');
运行结果:
结论:
q固定,随着p的变化,时域波形出现偏移,当p=30时由于窗口函数的变化,出现明显的泄漏现象,混叠也随之出现。
2、观察正弦序列
(1)正弦序列
。
令f=0.0625,N=32,FFT点数为32,检查谱峰出现的位置是否正确?
谱的形状如何?
如令N=32,FFT点数为512,谱的形状如何?
使用频域采样定理分析该现象并绘出幅频特性曲线。
MATLAB程序:
N=32;f=0.0625;
n=0:
N-1;
xb=sin(2*pi*f*n);
figure
(1);
stem(n,xb,'.');
yb1=fft(xb,32);
figure
(2);
stem([0:
31],imag(yb1),'.');
yb2=fft(xb,512);
figure(3);
stem([0:
511],imag(yb2),'.');
运行结果:
结论:
当FFT点数N=32时,谱峰出现的位置正确。
频谱只在k=2,30处有值,其余地方都为0。
当FFT点数为512时,频谱出现了明显的泄漏和混叠。
当DFT点数大于序列长度时,可以通过X(k)恢复
。
(2)令f=0.265625,N=32,FFT点数分别为32、64,观察其幅频特性曲线,何时从幅频特性曲线上可以观测到原正弦信号的模拟频率?
信号长度N=64情况又如何?
MATLAB:
N1=32;N2=64;f=0.265625;
n1=0:
N1-1;n2=0:
N2-1;
xb1=sin(2*pi*f*n1);
figure
(1)
subplot(3,1,1);stem(n1,xb1,'.');
yb1=fft(xb1,32);
subplot(3,1,2);stem(n1,imag(yb1),'.');
yb2=fft(xb1,64);
subplot(3,1,3);stem(n2,imag(yb2),'.');
xb2=sin(2*pi*f*n2);
figure
(2);
subplot(3,1,1);stem(n2,xb2,'.');
yb3=fft(xb2,32);
subplot(3,1,2);stem(n1,imag(yb3),'.');
yb4=fft(xb2,64);
subplot(3,1,3);stem(n2,imag(yb4),'.');
运行结果:
结论:
信号长度N=32,当FFT点数为32时,无法观察出原信号模拟频率。
当FFT点数为64时,在k=17时可以观察到原模拟信号的频率。
信号长N=64时,情况一致。
(3)f=0.245,N=256,观察其时域曲线,注意此时由于采样引起的假调制现象。
通过选择FFT的点数,能否使该曲线出现单线谱?
设f=1.96kHz,采样频率8kHz,N=256,此时频谱分辨率为多少?
通过FFT离散谱观察到的信号模拟频率与实际频率相差多少?
MATLAB程序:
N=256;f1=0.245;
n=0:
N-1;
xb1=sin(2*pi*f1*n);
figure
(1);
subplot(2,1,1);stem(n,xb1,'.');
yb1=fft(xb1,256);
subplot(2,1,2);stem(yb1,'.');
运行结果:
结论:
可以通过选择FFT点数使曲线出现单线谱。
频谱分辨率
=31.25Hz。
通过FFT观察信号模拟频率为1.96875kHz,与真实频率相差0.00875kHz。
(3)观察衰减正弦序列
观察衰减正弦序列
,令a=0.1,f分别为0.21875、0.4375、0.5625(此时还满足Nyquist采样定理?
),N=32,FFT点数32、256,观察在不同f值的情况下,谱峰出现的位置、形状,有无混叠和泄露现象,说明产生的原因。
MATLAB程序:
x=0.1;f1=0.21875;f2=0.4375;f3=0.5625;
N=32;
n=0:
N-1;
xc1=exp(-x.*n).*sin(2*pi*f1*n);
yc1=fft(xc1,32);
yc2=fft(xc1,256);
figure
(1);
subplot(3,1,1);stem(n,xc1,'.');
subplot(3,1,2);stem(yc1,'.');
subplot(3,1,3);stem(yc2,'.');
xc2=exp(-x.*n).*sin(2*pi*f2*n);
yc3=fft(xc2,32);
yc4=fft(xc2,256);
figure
(2);
subplot(3,1,1);stem(n,xc2,'.');
subplot(3,1,2);stem(yc3,'.');
subplot(3,1,3);stem(yc4,'.');
xc3=exp(-x.*n).*sin(2*pi*f3*n);
yc5=fft(xc3,32);
yc6=fft(xc3,256);
figure(3);
subplot(3,1,1);stem(n,xc3,'.');
subplot(3,1,2);stem(yc5,'.');
subplot(3,1,3);stem(yc6,'.');
运行结果:
结论:
当f=0.5625时,信号的最高频率大于采样频率的一半,所以此时不满足Nyquist采样定理。
在满足Nyquist采样定理的情况下,f增大,谱峰逐渐靠近。
出现了混叠和泄漏,由于采样点数不足时造成的。
(4)观察三角波序列和反三角波序列
用N=8点FFT分析信号序列
和
的幅频特性,观察两者的序列形状和频谱曲线有什么异同?
用FFT点数为256分析这两个信号,观察频谱发生了什么变化?
两种情况下的FFT频谱还有相同之处么?
为什么?
MATLAB程序:
N=8;x=zeros(size(n));
n=0:
N-1;
mask=(n>=0)&(n<=3);
xd(mask)=1+n(mask);
mask=(n>=4)&(n<=7);
xd(mask)=8-n(mask);
mask=(n>=0)&(n<=3);
xe(mask)=4-n(mask);
mask=(n>=4)&(n<=7);
xe(mask)=n(mask)-3;
yd1=fft(xd,8);
ye1=fft(xe,8);
yd2=fft(xd,256);
ye2=fft(xe,256);
figure
(1);
subplot(3,1,1);stem(n,xd,'.');
subplot(3,1,2);stem(yd1,'.');
subplot(3,1,3);stem(yd2,'.');
figure
(2);
subplot(3,1,1);stem(n,xe,'.');
subplot(3,1,2);stem(ye1,'.');
subplot(3,1,3);stem(ye2,'.');
结论:
二者在序列形状上,三角序列先增大后减小;反三角序列先减小后增大。
二者的频谱曲线相对横轴是对称的。
当FFT点数为256时,二者频谱不再对称且反三角序列的频谱出现了明显的混叠现象。