【问题标题】:inverse FFT when only a few time points are needed只需要几个时间点时的逆 FFT
【发布时间】:2013-10-03 03:22:21
【问题描述】:

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

如果需要,我可以根据频率响应计算整个脉冲响应,然后丢弃 95% 的结果,但这似乎效率很低。在优化我的模型时,iFFT 将被计算很多次(可能是数千次),所以我想确保我可以使其尽可能高效。在这一点上,我唯一的选择似乎是使用 FFTW,然后丢弃不需要的数据(因为没有更好的主意)。

是否有一种快速的方法可以仅针对那些感兴趣的时间点计算逆 FFT,例如不是 FFT 可以访问的整个时间跨度?例如,我可能只需要 5% 的时间点。我对 FFT 和 iFFT 的计算不是很熟悉,所以我对这个问题的答案没有洞察力。

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

【问题讨论】:

  • 如果您只是在寻找少量的点,那么您可以直接对这些点应用 DFT 公式。但不幸的是,对于足够大的 FFT 来说,这 5% 可能已经太多了。
  • 这个问题可能更适合dsp.stackexchange.com的人

标签: performance fft fftw ifft


【解决方案1】:

这完全取决于时间长度和频率分辨率。

如果您的原始(测量)脉冲响应低于 512 个样本,您可以只使用这 512 个样本并计算 512 点 FFT。这会给您带来较差的频率分辨率,但您可以根据需要对频谱进行插值。

在另一个方向,只需将您的长频谱“下采样”到某个 512 频率的 bin 频谱(例如,每 4 行取一次)并执行逆 FFT,这将导致短的 512 采样脉冲响应。

【讨论】:

    猜你喜欢
    • 2019-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-17
    • 1970-01-01
    相关资源
    最近更新 更多