2013-10-03 49 views
1

我想要做一些反覆調用iFFT的建模。這將以複數頻率響應(振幅,相位)的參數模型作爲輸入併產生脈衝響應作爲輸出。我想將其與我測量的房間內揚聲器的「窗口式」脈衝響應進行比較。測得的脈衝可以通過初始部分來表徵,該初始部分對應於直接通過空氣傳播到持續幾毫秒的麥克風的聲音,此後,反射離開房間(地板,牆壁等)表面的聲音污染信號。未受污染的部分可能是總測量衝量的5%。我想比較iFFT從頻率響應產生的脈衝響應與僅測量脈衝的未污染部分。僅需要幾個時間點時的逆FFT

如果需要,我可以計算頻率響應的整個脈衝響應,然後丟棄95%的結果,但這似乎是非常低效的。在我的模型正在優化的過程中,iFFT將被計算許多次(可能有數千次),所以我想確保我可以儘可能地提高效率。在這一點上,我唯一的選擇似乎是使用FFTW,然後丟棄不需要的數據(因爲缺乏更好的想法)。

是否有一種快速的方法來計算僅針對那些感興趣的時間點的逆FFT,例如,不是FFT可以訪問的整個時間範圍?例如,我可能只需要5%的時間點。我並不熟悉FFT和iFFT的計算,所以我沒有對這個問題的答案有所瞭解。

編輯:我複查,如果我記錄在96kHz的16K的衝動,反射污染的信號之前,只有大約475樣本「好數據」。這隻佔記錄信號總數的3%以下。我如何從我的頻率響應中有效地計算出這200點?

+2

如果您只查找少量點數,則可以直接對這些點應用DFT公式。但不幸的是,對於足夠大的FFT,5%可能已經太多了。 – Mysticial

+2

這個問題可能會更好地針對http://dsp.stackexchange.com/上的人們。 – Andy

回答

0

它的全部都是時間和頻率分辨率的問題。如果您的原始(測量的)脈衝響應低於512個採樣,則可以使用這512個採樣並計算512點FFT。這會給你很差的頻率分辨率,但如果你願意,你可以插入頻譜。在另一個方向上,將您的長頻譜「下采樣」到512個頻率的二進制頻譜(例如,每隔4行)並進行逆FFT,這將導致短的512採樣脈衝響應。