Signal Processing Toolbox | ![]() ![]() |
周波数応答
Signal Processing Toolboxでは、アナログフィルタとディジタルフィルタのいずれの周波数領域解析も行うことができます。
ディジタル領域
freqz
は、FFTをベースとしたアルゴリズムを用いて、ディジタルフィルタのz変換周波数応答を計算します。具体的には、ステートメント
[h,w] = freqz(b,a,n)
は、ディジタルフィルタのn点の複素周波数応答H(ejω)を出力します。
最も単純な型では、
freqz
はフィルタ係数ベクトルb
、および、a
と周波数応答を計算する点数を設定する整数n
を必要とします。freqz
は複素周波数応答をベクトルh
に、また実際の周波数点をラジアン/秒単位でベクトルw
に、それぞれ出力します。
freqz
は、サンプリング周波数や任意の周波数点からなるベクトルなどのパラメータを入力として設定することもできます。つぎの例は、12次のChebyshev I型フィルタの256点の周波数応答を求めるものです。freqz
は、サンプリング周波数fs
を1000Hzとして設定します。
[b,a] = cheby1(12,0.5,200/500); [h,f] = freqz(b,a,256,1000);
入力引数として、サンプリング周波数を含んでいるため、freqz
は、0からfs
/2の間が周波数応答計算に使われ、256個の周波数点からなるベクトルf
を出力します。
出力引数を設定せずにfreqz
を読み込む場合、周波数に対するゲインと位相の両方を自動的にプロットします。たとえば、2000Hzのサンプリング周波数で、400Hzのカットオフ周波数をもつ9次のButterworthローパスフィルタは、
[b,a] = butter(9,400/1000);
となります。つぎに、このフィルタの256点の複素周波数応答を計算し、freqz
を使って、ゲインと位相をプロットします。
freqz(b,a,256,2000)
freqz
は、また、周波数応答の計算で用いる任意の周波数点のベクトルを使うこともできます。たとえば、
w = linspace(0,pi); h = freqz(b,a,w);
は、ベクトルb
、および、ベクトルa
で定義されるフィルタについて、w
の周波数点における複素周波数応答を計算します。周波数点は、0から2までの範囲とすることが可能です。0から設定したサンプリング周波数までの範囲の周波数ベクトルを設定するには、周波数ベクトルとサンプリング周波数の値を共に入力引数として設定します。
![]() | インパルス応答 | アナログ領域 | ![]() |