MATLAB に 70 のグレースケール フレームを含むムービーがあります。私はそれらを 3 次元行列に入れました。そのため、次元は X、Y、時間です。
時間次元で周波数を決定したいので、3 次元のすべてのポイントの FFT を計算する必要があります。これは問題ありませんが、 で画像を元の形に戻す必要がありifft
ます。
通常の状況X = ifft(fft(X))
では、これは true: ですが、多次元データを扱う場合、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 なので、640x480 ピクセルの画像が 70 枚あります。
のみを使用する場合fft
、y2
は 480x640x128 です ( で 128 ポイントが必要なため、これは正常ですNFFT
)。
と を使用するfft
とifft
、y2
480x640x128 ピクセルになります。これは正常ではありません。128 は再び 70 になるはずです。2 つのループを
使用して 1 次元だけで実行しようとしましたが、これは正常に機能します。for
ただし、for ループには時間がかかります。