1

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

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

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

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

4

1 回答 1

0

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

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

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

于 2015-02-10T16:41:12.260 回答