[英]How to determine frequency in time dimension using FFT and IFFT on 3D Matrix
[英]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 像素的圖像。
如果我只使用fft
, y2
是 480x640x128 (這是正常的,因為我們想要 128 點NFFT
)。
如果我使用fft
和ifft
, y2
是 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.