Main Content

離散時間システムのアップサンプル

次の例は、コマンド d2dupsample の両方を使用してシステムをアップサンプルし、その結果を元のシステムと比較する方法を示します。

システムのアップサンプルは、最初の設計よりも速い速度でデジタル コントローラーを実装しなければならないような場合に便利です。

離散時間システムを作成します。

G(z)=z+0.4z-0.7

サンプル時間は 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')

Figure contains an axes object. The axes object contains 3 objects of type line. These objects represent G, d2d, upsample.

アップサンプリングしたモデル G_up のステップ応答は、元のモデル G のステップ応答と完全に一致します。リサンプリングしたモデル G_d2d の応答は、3 番目ごとのサンプルでのみ一致します。

元のモデルの周波数応答とリサンプリングしたモデルの周波数応答を比較します。

bode(G,'-r',G_d2d,':g',G_up,'--b')
legend('G','d2d','upsample','Location','SouthWest')

Figure contains 2 axes objects. Axes object 1 contains 3 objects of type line. These objects represent G, d2d, upsample. Axes object 2 contains 3 objects of type line. These objects represent G, d2d, upsample.

周波数領域でも、upsample コマンドで作成したモデル G_up は、元のモデルのナイキスト周波数に至るまで元のモデルと完全に一致します。

upsample を使用した方が、時間領域でも周波数領域でも d2d よりもよりよく一致することがわかります。ただし、upsample ではモデルの次数が増えるため、望ましくないことがあります。さらに、upsample は元のサンプル時間が新しいサンプル時間の整数倍である場合にのみ使用可能です。

参考

関数

ライブ エディター タスク

関連するトピック