登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
在matlab中应用fft求傅立叶变换后,如果想画出频谱图,必须用fftshift命令处理变换的结果。例子如下:
clear; clc; t=0:0.001:2; n=2001; Fs=1000; Fc=200; x=cos(2*pi*Fc*t); y1=fft(x); y2=fftshift(y1); f=(0:2000)*Fs/n-Fs/2; hold on; plot(f,abs(y1),'r') plot(f,abs(y2),'b') 结果如下图:
图中红色是没经过fftshift处理的频谱图,蓝色是经过处理之后的。结合程序,显然x的频谱应该位于200Hz处,经过fftshift处理的蓝色频谱是正确的。注意:红色和蓝色的曲线在两边分别关于-250Hz和250Hz对称。这并不是偶然。以下是Matlab的帮助文件中对fftshift的说明:Y = fftshift(X) rearranges the outputs of fft, fft2, and fftn by moving the zero-frequency component to the center of the array. It is useful for visualizing a Fourier transform with the zero-frequency component in the middle of the spectrum. For vectors, fftshift(X) swaps the left and right halves of X.由此可见,fftshift的作用正是让正半轴部分和负半轴部分的图像分别关于各自的中心对称。将信号频率Fc改为100Hz后的频谱如下,蓝色是fftshift处理后的频谱:
|