このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
fftshift
ゼロ周波数成分をスペクトルの中心に移動
説明
Y = fftshift(
は、ゼロ周波数成分を配列の中心に移動することで、フーリエ変換 X
)X
を並べ替えます。
X
がベクトルの場合、fftshift
はX
の左半分と右半分を入れ替えます。X
が行列の場合、fftshift
は、X
の第 1 象限と第 3 象限を、第 2 象限と第 4 象限を入れ替えす。X
が多次元配列の場合、fftshift
は、各次元に沿って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
1 次元信号のシフト
信号の周波数成分の解析時に、ゼロ周波数成分を中心にシフトすると役立つ場合があります。
信号 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)
ゼロ周波数成分をシフトし、ゼロを中心にしてパワーをプロットします。
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)
行列内の信号のシフト
複数の 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,:))
ゼロ周波数成分をシフトし、ゼロを中心にして各信号のパワーをプロットします。
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,:))
入力引数
X
— 入力配列
ベクトル | 行列 | 多次元配列
入力配列。ベクトル、行列、または多次元配列として指定します。
データ型: double
| single
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
複素数のサポート: あり
dim
— 演算の対象の次元
正の整数スカラー
演算の対象の次元。正の整数のスカラーとして指定します。値を指定しない場合、fftshift
はすべての次元に沿って入れ替えます。
入力行列
Xc
を考えます。演算fftshift(Xc,1)
はXc
の各列の半分を入れ替えます。行列
Xr
を考えます。演算fftshift(Xr,2)
はXr
の各行の半分を入れ替えます。
データ型: double
| single
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
GPU コード生成
GPU Coder™ を使用して NVIDIA® GPU のための CUDA® コードを生成します。
スレッドベースの環境
MATLAB® の backgroundPool
を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool
を使用してコードを高速化します。
この関数はスレッドベースの環境を完全にサポートしています。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
GPU 配列
Parallel Computing Toolbox™ を使用してグラフィックス処理装置 (GPU) 上で実行することにより、コードを高速化します。
この関数は GPU 配列を完全にサポートしています。詳細については、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
分散配列
Parallel Computing Toolbox™ を使用して、クラスターの結合メモリ上で大きなアレイを分割します。
この関数は分散配列を完全にサポートしています。詳細については、分散配列を使用した MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2006a より前に導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)