ドキュメンテーション センター

  • 評価版
  • 製品アップデート

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

goertzel

2 次 Goertzel アルゴリズムを使用した離散フーリエ変換

構文

dft_data = goertzel(data)
dft_data = goertzel(data,freq_indices)
dft_data = goertzel(data,freq_indices,dim)

説明

dft_data = goertzel(data) では、2 次 Goertzel アルゴリズムを使用して、入力データ data の離散フーリエ変換 (DFT) が返されます。data が行列の場合、goertzel では各列の DFT が個別に計算されます。

dft_data = goertzel(data,freq_indices) では、周波数インデックス freq_indices の DFT が返されます。

dft_data = goertzel(data,freq_indices,dim) では、行列 data の DFT が次元 dim に沿って計算されます。

電話のキーパッドの「1」ボタンを押して生成される 2 つのトーンの周波数を推定します。

f=[697 770 852 941 1209 1336 1477];
% frequencies for numbers 0:9 on keypad
Fs = 8000; %sampling frequency
N = 205;	%Number of points
% Tones generated by a "1": 697 and 1209 Hz 
data = sum(sin(2*pi*[697;1209]*(0:N-1)/Fs));
% Indices of the DFT for the frequencies f 
freq_indices = round(f/Fs*N)+1;   
%Compute DFT using Goertzel algorithm
dft_data = goertzel(data,freq_indices); 
%Plot the DFT magnitudes
stem(f,abs(dft_data)); 
set(gca,'xtick',f); xlabel('Hz');
ylabel('Magnitude');

代替法

次の方法で DFT を計算することもできます。

  • 関数 fft: いくつかの周波数のみで DFT が必要な場合は、Goertzel アルゴリズムよりも非効率的です。

  • 関数 czt: チャープ Z 変換。関数 czt は、円または螺旋の等高線上の入力の Z 変換を計算し、特殊ケースとして DFT を含みます。

詳細

すべて展開する

アルゴリズム

Goertzel アルゴリズムでは、DFT が再帰的差分方程式として実装されます。この差分方程式を作成するには、インパルス応答が の、N 点からなる入力 x(n) のたたみ込みとして DFT を表現します。ここで、 であり、u(n) は単位ステップ数列です。

インパルス応答の Z 変換は、次のようになります。

直接型 II は次のように実装されます。

参考文献

Proakis, J.G. and D.G. Manolakis. Digital Signal Processing:Principles, Algorithms, and Applications, Upper Saddle River, NJ:Prentice Hall, 1996, pp. 480–481。 480–481.

この情報は役に立ちましたか?