このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
フーリエ変換は,時間または空間でサンプリングされた信号を,周波数でサンプリングされた同じ信号に関連付ける公式です。信号処理では,フーリエ変換により,信号の重要な特性,つまり周波数成分が明らかになる場合があります。
ベクトル が 個の等間隔でサンプリングされた点をもつ場合,フーリエ変換は次の式で定義されます。
は 個ある1の複素根の1つで, は虚数単位です。 と に対して,インデックス とインデックス の範囲は から までです。
MATLAB®の関数fft
では,高速フーリエ変換アルゴリズムを使用してデータのフーリエ変換を計算します。時間t
の関数であり,周波数成分が15赫兹と20 Hzの正弦波信号x
について考えます。
10秒秒ごとに間に渡ってサンプリングされた時間ベクトルを使用します。
t = 0:1/50:10-1/50;X = sin(2* 15*t) + sin(2* 20*t)情节(t, x)
信号のフーリエ変換を計算し,周波数空間での信号のサンプリングに対応するベクトルf
を作成します。
y = fft (x);f =(0:长度(y) 1) * 50 /长度(y);
信号の振幅を周波数の関数としてプロットすると,振幅のスパイクは,信号の周波数成分である15赫兹および20 Hzに対応します。
情节(f, abs (y))标题(“级”)
この変換では,スパイクのミラーコピーも生成され,これは信号の負の周波数に対応します。この周期性をさらにわかりやすく可視化するには,関数fftshift
を使用して,変換でゼロを中央にした循環シフトを実行します。
n =长度(x);fshift = (- n / 2: n / 2 - 1) * (50 / n);yshift = fftshift (y);情节(fshift、abs (yshift))
科学的な応用では,ランダムノイズによって信号が破損し,周波数成分が隠されることが多くあります。フーリエ変換によってランダムノイズを排除し,周波数を明示することができます。たとえば,元の信号x
にガウスノイズを挿入することにより,新しい信号xnoise
を作成します。
rng (“默认”) xnoise = x + 2.5*randn(size(t)));
周波数の関数としての信号パワーは,信号処理で多く使用される測定基準です。パワーは,信号のフーリエ変換の振幅を二乗して,周波数サンプルの数で正規化したものです。中央を周波数ゼロに揃えて,ノイズを含む信号のパワースペクトルを計算してプロットします。ノイズがあっても,パワーのスパイクにより,信号の周波数を判別できます。
ynoise = fft (xnoise);ynoiseshift = fftshift (ynoise);功率= abs (ynoiseshift)。^ 2 / n;情节(fshift、电力)标题(“权力”)
フーリエ変換式を直接使用して の 個の要素をそれぞれ計算するには,約 回の浮動小数点演算が必要です。高速フーリエ変換アルゴリズムでは,計算に必要な演算は約 回のみです。この計算の効率性は,数百万ものデータ点をもつデータを処理する場合は大きなメリットになります。特化された高速フーリエ変換アルゴリズムを多数実装すると, が2のべき乗である場合にはさらに効率的になります。
カリフォルニア沿岸沖で水中マイクから収集されたオーディオデータについて考えます。このデータは,康奈尔大学生物声学研究项目が管理するライブラリにあります。bluewhale.au
のデータのサブセットを読み込んで書式設定します。このファイルには太平洋のシロナガスクジラの鳴き声が収録されています。コマンド声音(x, fs)
を使用すると,オーディオファイル全体を聴くことができます。
whaleFile =“bluewhale.au”;[x, fs] = audioread (whaleFile);whaleMoan = x (2.45 e4:3.10e4);t = 10 * (0:1 / fs: ((whaleMoan) 1)长度/ fs);情节(t, whaleMoan)包含(的时间(秒)) ylabel (“振幅”) xlim ([0 t(结束)))
元の長さよりも大きい最小の2のべき乗である新しい信号長を指定します。次に,fft
を使用して,新しい信号長を使ってフーリエ変換を計算します。fft
では,サンプルサイズを拡大するために,データにゼロが自動的に付加(パディング)されます。このパディングにより,特にサンプルサイズに大きな素因数が含まれている場合に,変換の計算が大幅に速くなります。
m =长度(whaleMoan);n = pow2 (nextpow2 (m));y = fft (whaleMoan n);
信号のパワースペクトルをプロットします。プロットは,うめき声が17赫兹前後の基本周波数と,2番目の調波が強い高調波群から構成されていることを示しています。
f = (0: n - 1) * (fs / n) / 10;%频率向量功率= abs (y)。^ 2 / n;%功率谱情节(f(1:地板(n / 2))、电力(1:地板(n / 2)))包含(“频率”) ylabel (“权力”)
fft
|fft2
|fftn
|fftshift
|fftw
|传输线
|nextpow2