2011-06-01 64 views
1

我正在使用真正浮標的3D陣列。在規劃FFT時,我可以使用相同的逆FFT計劃嗎?

在我的代碼的一部分中,我應該採用這些值的3DFFT,然後用另一個浮點矩陣將得到的複雜矩陣點出來。 (點=逐點乘法)

然後,我採取逆FFT並更新初始數組。

當你做第一個cufftPlan3d()時,什麼是重要的? 即計劃真的在尋找什麼?

該計劃是否需要快速查看數組的維數和類型,還是查看真實和複雜部分的大小?

我想盡可能少地使用這個計劃,這樣我就可以更快地計算轉換,但我也希望FFT(和iFFT)儘可能快,因爲這是代碼的瓶頸。

我的第一個想法是,我會在初始FFT之前制定一個計劃,然後在得到的逆FFT的點積/ FFT之後再製定一個計劃,然後在循環的任何地方使用這兩個計劃。

感謝您的任何建議。

回答

2

只要變換的類型和大小沒有變化,您就一定能夠創建一個計劃並在循環的任何地方重用它。這聽起來像是你的情況。實際上,只要類型和大小相同,您可以對前向(FFT)和反向(iFFT)轉換使用相同的計劃,因爲CUFFT_FORWARD/CUFFT_REVERSEcufftExec*()的參數,而不是cufftPlan*()的參數。

如果您有多種尺寸和類型可供支持,請在啓動時爲每種類型/尺寸組合創建單獨的計劃(如果您提前知道)。

+1

可能是你可以添加一個例子來解釋一下。因爲很多人都會使用R2C和C2R轉換器進行正向和反向轉換,這種轉換不能用一種類型處理。唯一可能的情況是輸入和輸出都是複雜的(C2C和Z2Z變換)。 – 2011-06-02 20:27:47