当只需要几个时间点时的逆FFT

时间:2013-10-03 03:22:21

标签: performance fft fftw ifft

我想做一些会反复调用iFFT的建模。这将采用复频率响应(幅度,相位)的参数模型作为输入,并产生脉冲响应作为输出。我想将此与我测量的房间扬声器的“窗口”脉冲响应进行比较。测量的脉冲可以通过初始部分来表征,该初始部分对应于直接通过空气传播到麦克风的声音持续几毫秒,之后从房间的表面(地板,墙壁等)反射的声音污染了信号。未污染部分可能是总测量脉冲的5%。我想比较iFFT从频率响应产生的脉冲响应到仅测量脉冲的未受污染部分。

如果需要,我可以从频率响应中计算出整个脉冲响应,然后只丢掉95%的结果,但这似乎是非常低效的。在我的模型进行优化的同时,iFFT将被计算很多次(可能是数千次),所以我想确保我能够尽可能地提高它的效率。在这一点上,我唯一的选择似乎是使用FFTW然后丢弃不需要的数据(缺乏更好的想法)。

是否存在仅针对感兴趣的时间点计算逆FFT的快速方法,例如,不是FFT可以访问的整个时间跨度?例如,我可能只需要5%的时间点。我对FFT和iFFT的计算并不十分熟悉,所以我对这个问题的答案一无所知。

编辑:我重新检查,如果我在96kHz处记录16k脉冲,那么在反射污染信号之前,只有大约475个“良好数据”样本。这仅占总记录信号的3%以下。如何从频率响应中有效地计算出这200个点?

1 个答案:

答案 0 :(得分:0)

这完全是时间长度和频率分辨率的问题。

如果您的原始(测量)脉冲响应低于512个样本,您可以使用这512个样本并计算512点FFT。这会给你很差的频率分辨率,但如果你愿意,你可以插入频谱。

在另一个方向,只是"下采样"您的长谱到512个频率的二频谱(例如每4行一次)并进行逆FFT,这将导致短的512个样本脉冲响应。