我在 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
and ifft
,y2
则为 480x640x128 像素。这不正常,128应该又是70了。
我试图通过使用 2 个for
循环在一个维度上做到这一点,这很好。不过,for 循环需要很多时间。