这是一个窗口工件。
链接的代码以零填充10,000个采样信号,因此长度是2的幂。
%% Author :- Embedded Laboratory
%%This Project shows how to apply FFT on a signal and its physical
% significance.
fSampling = 10000; %Sampling Frequency
tSampling = 1/fSampling; %Sampling Time
L = 10000; %Length of Signal
t = (0:L-1)*tSampling; %Time Vector
F = 100; %Frequency of Signal
%% Signal Without Noise
xsig = sin(2*pi*F*t);
...
%%Frequency Transform of above Signal
subplot(2,1,2)
NFFT = 2^nextpow2(L);
Xsig = fft(xsig,NFFT)/L;
...
请注意,在上面的代码中,以FFT大小进行FFT,该FFT大小NFFT
是信号长度(在本例中为16,384)大2的下一个幂。从Mathworks fft()
文档中:
Y = fft(X,n)
返回n点DFT。fft(X)
相当于fft(X, n)
其中n
是的大小X
在第一维nonsingleton。如果的长度X
小于n
,X
则在结尾加上零n
。如果的长度X
大于n
,则序列将X
被截断。当X
为矩阵时,以相同方式调整列的长度。
这意味着您实际上并不是在对“纯正弦波”进行FFT-而是对正弦波的FFT进行平坦处理。
这等效于将正弦波的FFT与平方窗函数相乘。然后,FFT频谱是正弦波频谱(脉冲函数)与方波频谱(sinc(f))的卷积。
如果进行更改L = 16,384
以使信号没有零填充,则会观察到perfect
FFT。
进一步的搜索关键字:“光谱泄漏”,“窗口功能”,“锤击窗口”。
编辑:我在大学期间就整理了一些关于该主题的材料,其中的内容更加详尽。我已经将其发布在我的博客上。