这是一个窗口工件。
链接代码用零填充 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 大小NFFT
,它是信号长度(在本例中为 16,384)的 2 次幂。来自Mathworksfft()
文档:
Y = fft(X,n)
返回 n 点 DFT。fft(X)
相当于第一个非单一维度中fft(X, n)
的n
大小。X
如果 的长度X
小于n
,X
用尾随零填充到 length n
。如果 的长度X
大于n
,则序列X
被截断。当X
是一个矩阵时,列的长度以相同的方式调整。
这意味着您实际上并没有对“纯正弦波”进行 FFT - 您正在对正弦波进行 FFT,其后是平坦信号。
这相当于将正弦波乘以方窗函数的 FFT。FFT 频谱是正弦波频谱(脉冲函数)与方波频谱(sinc(f))的卷积。
如果您进行更改L = 16,384
以使信号没有零填充,您将观察到perfect
FFT。
进一步搜索关键词:“光谱泄漏”、“窗函数”、“汉明窗”。
编辑:我清理了一些我在大学时写的关于这个主题的材料,这些材料更详细。我已经在我的博客上发布了。