MATLAB에서 70 개의 회색조 프레임이있는 동영상이 있습니다. 저는 그것들을 3 차원 행렬에 넣었습니다. 그래서 차원은 X, Y, 그리고 시간입니다.
나는 시간 차원에서 주파수를 결정하기를 원하므로 3 rd 차원의 모든 점에 대해 FFT를 계산해야합니다. 이것은 문제가되지 않지만 이미지를 ifft
으로 원래 형식으로 되돌려 보내야합니다.
정상적인 상황에서는 X = ifft(fft(X))
이 사실이지만 다차원 데이터로 작업 할 때 MATLAB에서는 그렇지 않습니다. 3D 매트릭스 (Matlab)에서 FFT 및 IFFT
이
제가 사용하는 코드이다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이므로, 640 × 480 화소의 화상 (70)이있다.
fft
만 사용하는 경우 y2
은 480x640x128입니다 (이는 NFFT
과 함께 128 포인트를 원하기 때문에 정상입니다).
fft
및 ifft
을 사용하는 경우 y2
은 480x640x128 픽셀입니다. 이것은 정상이 아니며, 128은 다시 70이어야합니다.
2 개의 for
루프를 사용하여 하나의 차원에서이 작업을 시도했지만 정상적으로 작동합니다. for 루프는 많은 시간이 걸립니다.