为什么单个正弦波周期的傅立叶变换不是单个条形?


12

我已经尝试过在单个正弦波上使用不同的傅立叶变换代码,并且当理论上它们应该显示单个条形时,所有这些代码都会在信号频率上产生共振的分布式频谱。

采样频率影响不大(此处为10kHz),但是周期数却没有:

一个周期:

在此处输入图片说明

100个周期:

在此处输入图片说明

100000个周期:

在此处输入图片说明

看起来傅里叶变换只收敛了无数个周期,这为什么呢?一个正好一个周期的时间窗口是否应带来与N个周期相同的结果?

应用:这既出于好奇,又因为我想获得一阶系统的阶跃响应将激发机械装配的共振。因此,我需要对响应进行精确的傅立叶变换...我不再相信了。那么,基于“正弦波”情况,我该怎么做才能提高精度?

在此处输入图片说明

PS:这些特定的屏幕截图基于此处的代码。


6
除了可接受的答案之外,请注意,没有理由相信离散时间傅立叶变换(您正在使用DFT计算)将对正弦曲线一个周期的输入信号产生脉冲。正弦波的连续时间傅立叶变换是一种冲动,是的,但是该正弦波的持续时间是无限的。当您限制信号的时间时,这等效于乘以矩形窗口函数。频域结果是脉冲的卷积和窗口的傅立叶变换,这实际上就是您所观察的。
杰森R

谢谢你的发言。那么,如何解释如果我将NFFT数更改为向量的长度,则结果是单个条形?
米斯特先生(MisterMystère)2015年

1
好问题。发生这种情况是由于DFT中的固有假设。假设在DFT输入端给出的有限长度信号会在两个方向上以无限的持续时间周期性地延伸。因此,当DFT的“孔径”内有整数个周期时,最终将产生无限持续时间的正弦波变换:单个脉冲。这对应于光谱泄漏恰好为零的情况,在实践中很少发生。
Jason R

Answers:


30

这是一个窗口工件。

链接的代码以零填充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小于nX则在结尾加上零n。如果的长度X大于n,则序列将X被截断。当X为矩阵时,以相同方式调整列的长度。

这意味着您实际上并不是在对“纯正弦波”进行FFT-而是对正弦波的FFT进行平坦处理。

这等效于将正弦波的FFT与平方窗函数相乘。然后,FFT频谱是正弦波频谱(脉冲函数)与方波频谱(sinc(f))的卷积。

如果进行更改L = 16,384以使信号没有零填充,则会观察到perfectFFT。

进一步的搜索关键字:“光谱泄漏”,“窗口功能”,“锤击窗口”。


编辑:我在大学期间就整理了一些关于该主题的材料,其中的内容更加详尽。我已经将其发布在我的博客上


一直都在我面前。先生,干得好,我只是将NFFT数更改为向量的长度,然后做到了。
先生空军终于

1
@MisterMystère:有关我在大学写的相关材料的链接,请参见编辑。更详尽的解释,包括图片。
叶立昂

(尽管我忘了重新输入数学公式-现在已修复。)
Yi-aung Yip 2015年

提醒一下,使用matlab FFT算法填充到nextpow2几乎没有优势,我认为这是fftw(西方最快的傅立叶变换)
Scott Seidman
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.