FFT and IFFT on 3D matrix (Matlab)
- by SteffenDM
I have a movie with 70 grayscale frames in MATLAB. I have put them in a 3-D matrix, so the dimensions are X, Y and time.
I want to determine the frequencies in the time dimension, so I have to calculate the FFT for every point in the 3rd dimension. This is not a problem but I have to return the images to the original form with ifft.
In a normal situation this would be true: X = ifft(fft(X)), but this is not the case it seems in MATLAB when you work with multidimensional data.
This is the code I use:
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 is 480x640x70, so there are 70 images of 640x480 pixels.
If I use only fft, y2 is 480x640x128 (this is normal because we want 128 points with NFFT).
If I use fft and ifft, y2 is 480x640x128 pixels. This is not normal, the 128 should be 70 again.
I tried to do it in just one dimension by using 2 for loops and this works fine. The for loops take to much time, though.