Main Content

fftshift

ゼロ周波数成分をスペクトルの中心に移動

説明

Y = fftshift(X) は、ゼロ周波数成分を配列の中心に移動することで、フーリエ変換 X を並べ替えます。

  • X がベクトルの場合、fftshiftX の左半分と右半分を入れ替えます。

  • X が行列の場合、fftshift は、X の第 1 象限と第 3 象限を、第 2 象限と第 4 象限を入れ替えす。

  • X が多次元配列の場合、fftshift は、各次元に沿って X の半空間を入れ替えます。

Y = fftshift(X,dim) は、X の次元 dim に沿って処理します。たとえば、行列 X の行が複数の 1 次元変換を表す場合、fftshift(X,2)X の各行の半分を入れ替えます。

すべて折りたたむ

行ベクトルの左半分と右半分を入れ替えます。ベクトルの要素数が奇数である場合、中央の要素はベクトルの左半分に含まれると見なされます。

Xeven = [1 2 3 4 5 6];
fftshift(Xeven)
ans = 1×6

     4     5     6     1     2     3

Xodd = [1 2 3 4 5 6 7];
fftshift(Xodd)
ans = 1×7

     5     6     7     1     2     3     4

信号の周波数成分の解析時に、ゼロ周波数成分を中心にシフトすると役立つ場合があります。

信号 S を作成し、フーリエ変換を計算して、パワーをプロットします。

fs = 100;               % sampling frequency
t = 0:(1/fs):(10-1/fs); % time vector
S = cos(2*pi*15*t);
n = length(S);
X = fft(S);
f = (0:n-1)*(fs/n);     %frequency range
power = abs(X).^2/n;    %power
plot(f,power)

Figure contains an axes object. The axes object contains an object of type line.

ゼロ周波数成分をシフトし、ゼロを中心にしてパワーをプロットします。

Y = fftshift(X);
fshift = (-n/2:n/2-1)*(fs/n); % zero-centered frequency range
powershift = abs(Y).^2/n;     % zero-centered power
plot(fshift,powershift)

Figure contains an axes object. The axes object contains an object of type line.

複数の 1 次元信号は、行列内の行として表すことで処理できます。次に、次元引数を使用してフーリエ変換を計算し、各行のゼロ周波数成分をシフトします。

行が 2 つの 1 次元信号を表す行列 A を作成し、各信号のフーリエ変換を計算します。各信号のパワーをプロットします。

fs = 100;               % sampling frequency
t = 0:(1/fs):(10-1/fs); % time vector
S1 = cos(2*pi*15*t);
S2 = cos(2*pi*30*t);
n = length(S1);
A = [S1; S2];
X = fft(A,[],2);
f = (0:n-1)*(fs/n);     % frequency range
power = abs(X).^2/n;    % power
plot(f,power(1,:),f,power(2,:))

Figure contains an axes object. The axes object contains 2 objects of type line.

ゼロ周波数成分をシフトし、ゼロを中心にして各信号のパワーをプロットします。

Y = fftshift(X,2);
fshift = (-n/2:n/2-1)*(fs/n); % zero-centered frequency range
powershift = abs(Y).^2/n;     % zero-centered power
plot(fshift,powershift(1,:),fshift,powershift(2,:))

Figure contains an axes object. The axes object contains 2 objects of type line.

入力引数

すべて折りたたむ

入力配列。ベクトル、行列、または多次元配列として指定します。

データ型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
複素数のサポート: あり

演算の対象の次元。正の整数のスカラーとして指定します。値を指定しない場合、fftshift はすべての次元に沿って入れ替えます。

  • 入力行列 Xc を考えます。演算 fftshift(Xc,1)Xc の各列の半分を入れ替えます。

    fftshift(Xc,1) column-wise operation

  • 行列 Xr を考えます。演算 fftshift(Xr,2)Xr の各行の半分を入れ替えます。

    fftshift(Xr,2) row-wise operation

データ型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

拡張機能

C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。

GPU コード生成
GPU Coder™ を使用して NVIDIA® GPU のための CUDA® コードを生成します。

バージョン履歴

R2006a より前に導入

参考

| | | |