簡體   English   中英

3D 矩陣上的 FFT 和 IFFT

[英]FFT and IFFT on 3D matrix

我在 MATLAB 中有一部帶有 70 個灰度幀的電影。 我把它們放在一個 3-D 矩陣中,所以維度是 X、Y 和時間。
我想確定時間維度中的頻率,所以我必須為第三維度中的每個點計算 FFT。 這不是問題,但我必須使用ifft將圖像返回到原始形式。
在正常情況下,這是正確的: X = ifft(fft(X)) ,但在 MATLAB 中處理多維數據時情況並非如此。

這是我使用的代碼:

for i = 1:length              
    y(:, :, i) = [img1{i, level}];  %# take each picture from an cell array and put it
end                                 %# and put it in 3D array
y2 = ifft(fft(y, NFFT,3), NFFT, 3); %# NFFT = 128, the 3 is the dimension in which i want
                                    %# to calculate the FFT and IFFT

y是 480x640x70,所以有 70 張 640x480 像素的圖像。

如果我只使用ffty2是 480x640x128 (這是正常的,因為我們想要 128 點NFFT )。
如果我使用fftiffty2是 480x640x128 像素。 這不正常,128應該又是70了。
我試圖通過使用 2 個for循環在一個維度上做到這一點,這很好用。 但是,for 循環需要很長時間。

你需要打電話:

  y2 = ifft(fft(y, 128,3), 70, 3); 

或更一般地

  y2 = ifft(fft(y, NFFT, 3), size(y,3), 3);

你這樣做的方式,你的要求的輸出ifft也有第三個維度等於NFFT為128給你的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM