ドキュメンテーション

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

ノッチ フィルターの離散化

この例では、ノッチ フィルターを離散化するいくつかの手法を比較します。制御システムのコンポーネントはしばしば連続時間において設計されますが、それらは一般的に、デジタル コンピューターや組み込みプロセッサ上で実装するために離散化されなければなりません。

連続時間ノッチ フィルター

ノッチ フィルターは、特定の周波数におけるゲインを急激に減衰させることによって、その周波数の信号成分を拒否するように設計されています。この例では、次のノッチ フィルターを想定します。

$$ H(s) = {s^2 + 0.5 s + 100 /over s^2 + 5 s + 100} $$

bode コマンドを使用すると、このフィルターの周波数応答をプロットできます。

H = tf([1 0.5 100],[1 5 100]);
bode(H), grid

このノッチ フィルターでは、周波数 w = 1 rad/sec において 20dB の減衰が生じます。

離散化方法の選択

c2d コマンドを使用すると、連続時間システムを離散化できます。Control System Toolbox™ では、以下をはじめとした離散化アルゴリズムがサポートされています。

  • ゼロ次ホールド

  • 1 次ホールド

  • インパルス不変法

  • Tustin (双一次近似)

  • 周波数プリワーピングをもつ Tustin 変換

  • 極と零点のマッチング法

どの方法を選択すべきかは、適用性や要件によって決まります。

ゼロ次ホールド方法と 1 次ホールド方法、およびインパルス不変法は、時間領域における離散近似に適しています。たとえば、ZOH 離散化のステップ応答は、各タイム ステップにおける連続タイム ステップ応答と一致します (サンプリング レートに依存しません)。

Ts = 0.1;
Hdz = c2d(H,Ts,'zoh');
step(H,'b',Hdz,'r'),
legend('Continuous','Discretized at 10 Hz')

同様に、インパルス不変法による離散化では、インパルス応答が元のシステムと同じになります。

G = tf([1 -3],[1 2 10]);
Gd = c2d(G,Ts,'imp');
impulse(G,'b',Gd,'r')
legend('Continuous','Discretized at 10 Hz')

一方、Tustin 方法とマッチング法は、ゲインと位相ひずみがナイキスト周波数の近傍において少なくなるため、周波数領域において性能が向上する傾向があります。たとえば、ZOH、Tustin、およびマッチング法の各アルゴリズムを使用して、連続時間ノッチ フィルターとその離散化のボード応答を比較します。

Hdt = c2d(H,Ts,'tustin');
Hdm = c2d(H,Ts,'match');
bode(H,'b',Hdz,'r',Hdt,'m',Hdm,'g',{1 100}), grid
legend('Continuous','ZOH','Tustin','Matched')

この比較が示すとおり、マッチング法では、ノッチ フィルターの最も正確な周波数領域近似が得られます。ただし、ノッチ周波数と等しいプリワーピング周波数を指定することで、Tustin アルゴリズムの精度をさらに高めることができます。これにより、w = 10 rad/sec の近傍で正確なマッチングが確実に行われるようになります。

Hdp = c2d(H,Ts,'prewarp',10);
bode(H,'b',Hdt,'m',Hdp,'g',{1 100}), grid
legend('Continuous','Tustin','Tustin with prewarping')

サンプリング レートの選択

サンプリング レートが高いほど、連続応答と離散化応答がより厳密に一致するようになります。ただし、サンプリング レートはどこまで小さくでき、同様に、サンプリング間隔はどこまで大きくできるでしょうか。大ざっぱに言うと、連続モデルと離散化モデルを周波数 wm と厳密に一致させるには、ナイキスト周波数 (サンプリング レート× Pi) が wm の 2 倍以上であることを確認します。ノッチ フィルターの場合は、10 rad/sec の近傍で形状を維持する必要があるため、ナイキスト周波数を 20 rad/sec より高くして、サンプリング周期が最大 pi/20 = 0.16 s になるようにします。

この選択肢を確認するには、サンプリング周期を 0.1、0.15、および 0.3 に設定して、一致した離散化を比較します。

Hd1 = c2d(H,0.1,'m');
Hd2 = c2d(H,0.15,'m');
Hd3 = c2d(H,0.3,'m');
bode(H,'b',Hd1,'r',Hd2,'m',Hd3,'g',{1 100}), grid
legend('Continuous','Ts = 0.1','Ts = 0.15','Ts = 0.3')

予想どおり、離散化は Ts < 0.16 の場合に精度が高いままになりますが、サンプリング間隔がそれより大きくなると精度が低くなり始めます。

対話型 GUI

次のリンクをクリックして対話型 GUI を起動すると、離散化アルゴリズムとサンプリング レートの選択内容によって離散化ノッチ フィルターがどのような影響を受けるかがさらに示されます。

ノッチ離散化 GUI を開くノッチ離散化 GUI を開く

notch_gui

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