matlab-ifftshift、fftshift



Matlab Ifftshift Fftshift



  1. fft(周波数領域に変換)は中心によって対称ではありません(高速フーリエ変換の理由)。通常、fftshiftメソッドを使用して中心対称にする必要があります。これにより、フィットしたときに(時間領域に変換して)取得したデータが実際のデータと異なるため、復元するにはifftshiftを追加する必要があります。

  2. Fftは、時間領域信号を周波数領域信号に変換する1次元フーリエ変換です。 fftshiftは周波数領域信号用であり、fftのDC成分はスペクトルの中心に移動します。
    iffshiftはfftshiftの逆であり、fftshiftを復元します。



  3. Ifftshiftとfftshiftは実際には異なります。まず、fptershiftとfftshiftの両方が循環変位操作を実行します。 Fftshiftは、配列または行列の正の方向(右および下)の円変位であり、fittshiftは、負の方向(左および上)の円変位です。円周方向の変位のステップサイズは、配列または行列の長さの半分に等しく、偶数の場合はN / 2、奇数の場合は(N-1)/ 2です。これが、fftshiftとiftshiftの結果が偶数の長さの配列で同じであるが、奇数の長さの配列で同じである理由です。
    例:
    A = [1,2,3,4,5]
    B = fftshift(A)= [4,5,1,2,3] 12345は全体として右に移動します(5-1)/ 2 = 2桁
    C = ifftshift(A)= [3,4,5,1,2] 12345は全体として左に移動します(5-1)/ 2 = 2桁
    2回fftshiftはシーケンスを元の状態に復元できませんが、次のように使用します
    ifftshift(fftshift(A))= A

少ないオメガ= ifftshift(omega)



画像
オメガ= ifftshift(omega)
画像

結論:Iwttshiftは信号画像を改善できます。

補足: (見ることができません)
fftshiftの機能は、正の半軸部分と負の半軸部分の画像をそれぞれの中心に対して対称にすることです。 fftで直接取得したデータは周波数に対応していないため、fftshiftを補正することができます。
以下は、Matlabのヘルプファイルにあるfftshiftの説明です。
Y = fftshift(X)は、ゼロ周波数成分を配列の中心に移動することにより、fft、fft2、およびfftnの出力を再配置します。これは、スペクトルの中央にゼロ周波数成分があるフーリエ変換を視覚化するのに役立ちます。ベクトルの場合、fftshift(X)はXの左半分と右半分を交換します。
例は次のとおりです。
晴れ
clc
t = 0:0.001:2
n = 2001
Fs = 1000
Fc = 200
x = cos(2 円周率 Fc * t)
y1 = fft(x)
y2 = fftshift(y1)
f =(0:2000)* Fs / n-Fs / 2
つかまっている
plot(f、abs(y1)、 ‘r’)
plot(f、abs(y2)、 ‘b’)