0
我正在使用FFTW來計算二維複數數據的逆DFT。默認設置的輸出(複數到複數)是複數,虛數部分不是零。但是,我只對結果的實際部分感興趣,而不是複雜的部分。 FFTW的交錯實數複數輸出對我來說並不理想,因爲我想通過SSE後處理(實數)輸出。有沒有辦法從FFTW中獲得唯一真實的數組?由於輸出不是真實的,複合實際計劃看起來並不奏效。FFTW:只對實際結果感興趣
我正在使用FFTW來計算二維複數數據的逆DFT。默認設置的輸出(複數到複數)是複數,虛數部分不是零。但是,我只對結果的實際部分感興趣,而不是複雜的部分。 FFTW的交錯實數複數輸出對我來說並不理想,因爲我想通過SSE後處理(實數)輸出。有沒有辦法從FFTW中獲得唯一真實的數組?由於輸出不是真實的,複合實際計劃看起來並不奏效。FFTW:只對實際結果感興趣
[time | freq]域中的實際數據意味着conjugate symmetry在其他域中約爲零。 通過強制共軛對稱性(添加自身的共軛翻轉版本),可以高效地丟棄其他域中的虛部。這應該允許你在FFTW中使用真實的盜竊信息,獲得大約2倍的加速。請注意,您只能使用nfft/2 + 1個分箱進行FFTW實際分配。
這裏的一個1D的例子來說明這一點:
X = randn(8,1)+j*randn(8,1);
Xsym = .5*(X + conj(X([1 8:-1:2]'))); % force the symmetric condition
err = real(ifft(X)) - ifft(Xsym);
對於2D IFFT,它可能是最好使用2遍1D IFFT的執行2D IFFT as described in another answer
背後FFT的概念是得到複雜的數據,那麼爲什麼你只會嘗試實體部分。 – SinisterMJ
問題應該是:你對價值還是階段感興趣? – ogni42
我建議將此問題移至dsp.stackexchange.com –