繁体   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