主要内容

このペ,ジの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

fft

高速フ,リエ変換

説明

Y= fft (Xは高速フ,リエ変換(fft)アルゴリズムを使用して,X離散フ,リエ変換(dft)を計算します。

  • Xがベクトルの場合,fft (X)はそのベクトルのフ,リエ変換を返します。

  • Xが行列の場合,fft (X)は,Xの列をベクトルとして扱い,各列のフ,リエ変換を返します。

  • Xが多次元配列の場合,fft (X)は,サイズが1ではない最初の配列次元に沿った値をベクトルとして扱い,各ベクトルのフーリエ変換を返します。

Y= fft (X,nn点のDFTを返します。値を指定しない場合,Yのサ@ @ズはXと同じです。

  • Xがベクトルであり,Xの長さがnより短い場合,nの長さになるようにXの末尾をゼロで埋めます。

  • Xがベクトルであり,Xの長さがnを超える場合,Xが長さnで切り捨てられます。

  • Xが行列の場合,各列はベクトルの場合と同様に扱われます。

  • Xが多次元配列の場合,サaaplズが1でない最初の配列次元がベクトルの場合と同様に扱われます。

Y= fft (X,n,昏暗的は,次元昏暗的に沿ったフ,リエ変換を返します。たとえば,Xが行列の場合,fft (X, n, 2)は,各行のn点のフ,リエ変換を返します。

すべて折りたたむ

フリエ変換を使用して,ノズに埋もれた信号の周波数成分を求めます。

信号のパラメ,タ,として,サンプリング周波数1 kHz,信号の持続期間1.5秒を指定します。

Fs = 1000;采样频率T = 1/Fs;采样周期L = 1500;信号长度%t = (0:L-1)* t;%时间向量

50hz,振幅0.7の正弦波と120hz,振幅1の正弦波で信号を構成します。

S = 0.7*sin(2* *50*t) + sin(2* *120*t);

平均値0,分散4のホワ▪▪トノ▪▪ズで信号を乱します。

X = S + 2*randn(size(t));

ノ@ @ズを含む信号を時間領域にプロットします。信号X (t)を見て周波数成分を特定することは困難です。

情节(1000 * t (1:50) X(1:50))标题(“信号被零均值随机噪声破坏”)包含(‘t(毫秒)) ylabel (“X (t)”

图中包含一个轴。标题为“被零均值随机噪声损坏的信号”的轴包含一个类型为line的对象。

信号のフ,リエ変換を計算します。

Y = fft(X);

両側スペクトルP2を計算します。次に,P2および偶数の信号長lに基づいて,片側スペクトルP1を計算します。

P2 = abs(Y/L);P1 = p2 (1: l /2+1);P1(2:end-1) = 2*P1(2:end-1);

周波数領域fを定義し,片側振幅スペクトルP1をプロットします。ノaapl . exeズを追加したため,予期したとおり,振幅は正確に0.7と1にはなりません。平均的に,信号が長くなるほど周波数がよりよく近似されます。

f = Fs*(0:(L/2))/L;情节(f, P1)标题(X(t)的单侧振幅谱)包含(“f (Hz)”) ylabel (“| P1 (f) |”

图中包含一个轴。标题为X(t)单面振幅谱的轴包含一个类型为直线的对象。

ここで,ノイズを含まない元の信号のフーリエ変換を計算すると,正確な振幅0.7と1.0が得られます。

Y = fft(S);P2 = abs(Y/L);P1 = p2 (1: l /2+1);P1(2:end-1) = 2*P1(2:end-1);情节(f, P1)标题(S(t)的单侧振幅谱)包含(“f (Hz)”) ylabel (“| P1 (f) |”

图中包含一个轴。标题为S(t)的单面振幅谱的轴包含一个类型为直线的对象。

ガウスパルスを時間領域から周波数領域に変換します。

信号のパラメ,タ,とガウスパルスXを定義します。

Fs = 100;采样频率t = -0.5:1/Fs:0.5;%时间向量L =长度(t);信号长度%X = 1/(4*√(2* π *0.01))*(exp(-t.^2/(2*0.01)));

パルスを時間領域にプロットします。

情节(t, X)标题(“时域高斯脉冲”)包含(“时间(t)”) ylabel (“X (t)”

图中包含一个轴。标题为“时域高斯脉冲”的轴包含一个类型为line的对象。

関数fftを使用して信号を周波数領域に変換するには,まず新しい入力長として,元の信号長の次の2のべき乗を指定します。これにより,fftのパフォ,マンスを高めるために,信号Xの末尾がゼロで埋められます。

n = 2^nextpow2(L);

ガウスパルスを周波数領域に変換します。

Y = fft(X,n);

周波数領域を定義し,固有周波数をプロットします。

f = Fs*(0:(n/2))/n;P = abs(Y/n).^2;情节(f P (1: n / 2 + 1)标题(“频域高斯脉冲”)包含(“频率(f)”) ylabel (“| P (f) | ^ 2》

图中包含一个轴。标题为“频域高斯脉冲”的轴包含一个类型为line的对象。

時間領域および周波数領域で複数の余弦波を比較します。

信号のパラメ,タ,として,サンプリング周波数1 kHz,信号の持続期間1秒を指定します。

Fs = 1000;采样频率T = 1/Fs;采样周期L = 1000;信号长度%t = (0:L-1)* t;%时间向量

周波数がスケ,リングされた余弦波を各行が表す行列を作成します。その結果のXは3行1000列の行列です。1行目の波の周波数は 50、2 行目の波の周波数は 150、3 行目の波の周波数は 300 です。

X1 = cos(2* *50*t);%第一行波X2 = cos(2* *150*t);%第二行波X3 = cos(2* *300*t);%第三行波X = [x1;x2;x3);

X100年の各行の最初から個の要素を順番に1つの图にプロットし,それらの周波数を比較します。

i = 1:3次要情节(3、1,i)情节(t (1:10 0) X(我,1:10 0))标题([“行”num2str(我),“在时域内”])结束

图包含3个轴。在Time Domain中标题为Row 1的坐标轴1包含一个类型为line的对象。在Time Domain中标题为第2行的坐标轴2包含一个类型为line的对象。在Time Domain中标题为行3的坐标轴3包含一个类型为line的对象。

アルゴリズムのパフォ,マンスのために,fftでは入力の末尾をゼロで埋めることができます。この場合,Xの各行の長さが現在の長さの次に大きい2のべき乗になるように,各行をゼロで埋めます。関数nextpow2を使用して新しい長さを定義します。

n = 2^nextpow2(L);

Xの行に沿って,fftを使用するように引数昏暗的を指定します。

Dim = 2;

信号のフ,リエ変換を計算します。

Y = fft(X,n,dim);

各信号の両側スペクトルと片側スペクトルを計算します。

P2 = abs(Y/L);P1 = P2(: 1:n/2+1);P1(:,2:end-1) = 2*P1(:,2:end-1);

1の图内で、周波数領域に各行の片側振幅スペクトルをプロットします。

i = 1:3次要情节(3、1,i)图(0:(Fs / n): (f / 2 - f / n)、P1(我,1:n / 2)标题([“行”num2str(我),“在频域”])结束

图包含3个轴。在频域中标题为第1行的轴1包含一个类型为line的对象。在频域中标题为第2行的轴2包含一个类型为line的对象。在频域中标题为第3行的轴3包含一个类型为line的对象。

入力引数

すべて折りたたむ

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

Xが0行0列の空の行列である場合,fft (X)は0行0列の空の行列を返します。

デ,タ型:||int8|int16|int32|uint8|uint16|uint32|逻辑
複素数のサポ,ト:あり

変換の長さ。[]または非負の整数スカラ,として指定します。変換の長さとして正の整数スカラーを指定すると、fftのパフォ,マンスが向上することがあります。長さは通常 2 のべき乗、あるいは小さい素数の積に因数分解可能な値です。nが信号の長さ未満である場合,fftn番目の要素から後の残りの信号値を無視し,切り捨て後の結果を返します。n0の場合,fftは空の行列を返します。

例:n = 2^nextpow2(size(X,1))

デ,タ型:||int8|int16|int32|uint8|uint16|uint32|逻辑

演算の対象の次元。正の整数のスカラ,として指定します。値を指定しない場合,既定値は、サイズが 1 ではない最初の配列の次元です。

  • fft (X, [], 1)Xの列に沿って演算し,各列のフ,リエ変換を返します。

  • fft (X, [], 2)Xの行に沿って演算し,各行のフ,リエ変換を返します。

昏暗的ndims (X)よりも大きい場合,fft (X,[],昏暗的)Xを返します。nが指定された場合,fft (X, n,昏暗的)は次元昏暗的に沿って埋め込みまたは切り捨てを行うことにより,Xを長さnにします。

デ,タ型:||int8|int16|int32|uint8|uint16|uint32|逻辑

出力引数

すべて折りたたむ

周波数領域の表現。ベクトル、行列または多次元配列として返されます。

Xの型がである場合,fftはネ电子邮箱ティブレベルの単精度で計算し,Yの型もになります。それ以外の場合,Y型として返されます。

Yのサ@ @ズは次のとおりです。

  • Y = fft(X)またはY = fft(X,[],dim)の場合,Yのサ@ @ズはXのサ@ @ズに等しくなります。

  • Y = fft(X,n,dim)の場合,大小(Y,昏暗的)の値はnに等しくなりますが,その他すべての次元のサXと同じままです。

Xが実数の場合,Yは共役対称になり,Yの特異点の数は装天花板((n + 1) / 2)になります。

デ,タ型:|

詳細

すべて折りたたむ

ベクトルの離散フ,リエ変換

Y = fft(X)はフ,リエ変換,X = ifft(Y)は逆フ,リエ変換をそれぞれ実装します。長さnXおよびYの変換は,次式で定義されます。

Y ( k j 1 n X ( j W n ( j 1 ( k 1 X ( j 1 n k 1 n Y ( k W n ( j 1 ( k 1 ,

ここで,

W n e ( 2 π / n

は1のn乗根の1です。

ヒント

  • 関数fftの実行時間は,変換する長さに依存します。変換の長さが小さい素因数のみからなる場合、素数または大きい素因数からなる場合よりもかなり速くなります。

  • ほとんどのnの値にいて,実数入力DFTの計算時間は複素数入力DFTの約半分になります。ただし,nが大きな素因数をも場合,速度の差はほとんどありません。

  • ユ,ティリティ関数fftwを使用して,fftの処理速度を向上できます。この関数は,特定のサ▪▪▪ズと次元をも▪▪▪FFTの計算に使用されるアルゴリズムの最適化を制御します。

アルゴリズム

FFT関数(fftfft2fftn传输线ifft2ifftn)は,fftw[1][2]と呼ばれるラ@ @ブラリに基づいています。

参照

[1] FFTW (http://www.fftw.org

[2] Frigo, M.和S. G. Johnson。FFTW: FFT的自适应软件架构声学、语音和信号处理国际会议论文集。Vol. 3, 1998, pp. 1381-1384。

拡張機能

Gpuコ,ド生成
GPU编码器™を使用してNVIDIA GPU®のためのCUDA®コードを生成します。

R2006aより前に導入