1

Matlab/Octave/Scipy で、2 つの平面間で 2D フーリエ変換を行った後に周波数成分をシフトする正しい方法は何ですか (出力平面は入力平面の遠視野回折平面です)。

出力で特定の強度パターンを取得するために、ホログラム (入力平面に適用される位相遅延パターン) を計算するために、これら 2 つの平面間で反復フーリエ変換アルゴリズムを実行したいとします。飛行機。

入力面のフィールドを A、出力面のフィールドを B とします。

したがって、B は A のフーリエ変換になり、A は B の逆フーリエ変換になります (これはフランハウファー回折理論に従います)。

問題は、2 つの平面を接続するフーリエ変換の間でコマンド fftshift を使用して周波数成分をどの順序でシフトするかということです。

B=fftshift(fft2(A)); 次のように書いてもうまくいかないようです。A2=fftshift(ifft2(B));

これはおそらく一般的な問題ですが、どこにも答えが見つかりませんでした..

4

1 に答える 1

3

あなたのユースケースを理解しているかどうかはわかりませんが、一般的な目的は、DC (ゼロ周波数) ビンが中央に配置fftshiftされるように出力を回転させることです。fftしたがって、通常のパターンは次のとおりです。

X       = fft2(x);         % DC at X(1,1)
X_shift = fftshift(X);     % DC at X_shift(M/2+1,N/2+1)

% ... processing occurs here (Y_shift = foo(X_shift)) ...

Y       = ifftshift(Y_shift);
y       = ifft2(Y);
于 2012-05-27T11:29:36.710 に答える