離散時間システムのアップサンプル
次の例は、コマンド d2d
と upsample
の両方を使用してシステムをアップサンプルし、その結果を元のシステムと比較する方法を示します。
システムのアップサンプルは、最初の設計よりも速い速度でデジタル コントローラーを実装しなければならないような場合に便利です。
離散時間システムを作成します。
サンプル時間は 0.3 秒です。
G = tf([1,0.4],[1,-0.7],0.3);
d2d
を使用して、0.1 秒でシステムをリサンプリングします。
G_d2d = d2d(G,0.1)
G_d2d = z - 0.4769 ---------- z - 0.8879 Sample time: 0.1 seconds Discrete-time transfer function.
既定では、d2d
はゼロ次ホールド (ZOH) メソッドを使用してシステムをリサンプリングします。リサンプリングしたシステムは、G
と同じ次数になります。
upsample
を使用して、0.1 秒でシステムを再度リサンプリングします。
G_up = upsample(G,3)
G_up = z^3 + 0.4 --------- z^3 - 0.7 Sample time: 0.1 seconds Discrete-time transfer function.
2 番目の入力である 3
は、G
のサンプル時間の 3 倍の速さで G
をリサンプリングするよう upsample
に指示します。この upsample
への入力は整数でなければなりません。
G_up
には G
の 3 倍の数の極と零点があります。
元のモデル G
のステップ応答を、リサンプリングしたモデル G_d2d
および G_up
のステップ応答と比較します。
step(G,'-r',G_d2d,':g',G_up,'--b') legend('G','d2d','upsample','Location','SouthEast')
アップサンプリングしたモデル G_up
のステップ応答は、元のモデル G
のステップ応答と完全に一致します。リサンプリングしたモデル G_d2d
の応答は、3 番目ごとのサンプルでのみ一致します。
元のモデルの周波数応答とリサンプリングしたモデルの周波数応答を比較します。
bode(G,'-r',G_d2d,':g',G_up,'--b') legend('G','d2d','upsample','Location','SouthWest')
周波数領域でも、upsample
コマンドで作成したモデル G_up
は、元のモデルのナイキスト周波数に至るまで元のモデルと完全に一致します。
upsample
を使用した方が、時間領域でも周波数領域でも d2d
よりもよりよく一致することがわかります。ただし、upsample
ではモデルの次数が増えるため、望ましくないことがあります。さらに、upsample
は元のサンプル時間が新しいサンプル時間の整数倍である場合にのみ使用可能です。
参考
関数
d2d
|d2dOptions
|upsample