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

d2c

離散時間から連続時間へモデルを変換

構文

sysc = d2c(sysd)
sysc = d2c(sysd,method)
sysc = d2c(sysd,opts)
[sysc,G] = d2c(sysd,method,opts)

説明

sysc = d2c(sysd) は、連続時間モデル sysc を作成します。これは、入力にゼロ次ホールドを使用する離散時間動的システム モデル sysd と等価です。

sysc = d2c(sysd,method) は、指定された変換メソッド method を使用します。

sysc = d2c(sysd,opts) は、d2cOptions コマンドを使って指定されたオプション セット opts を使用して、sysd を変換します。

[sysc,G] = d2c(sysd,method,opts) は、状態空間モデル sysd の状態 xd[k]sysc の状態 xc(t) にマッピングする行列 G を返します。

入力引数

sysd

離散時間動的システム モデル

FunctionType'd' である idgrey モデルを d2c と直接一緒に使用することはできません。最初にモデルを idss 形式に変換してください。

method

離散時間から連続時間への変換メソッド。以下のいずれかの値として指定。

  • 'zoh' - 入力のゼロ次ホールド。制御入力はサンプリング周期の間中、区分的に一定であると仮定します。

  • 'foh' - 入力の線形内挿 (修正された 1 次ホールド)。制御入力はサンプリング周期の間中、区分的に線形であると仮定します。

  • 'tustin' — 導関数に対する双一次 (Tustin) 近似

  • 'matched' — 極-零点マッチング法 (SISO システムの場合のみ)。[1]を参照してください。

d2c 変換法のアルゴリズムの詳細については、連続/離散の変換方法を参照してください。

既定値: 'zoh'

opts

d2cOptions を使用して作成された、離散時間から連続時間への変換オプション。

出力引数

sysc

入力システム sysd と同じタイプの連続時間モデル。

sysd が同定された (IDLTI) モデルの場合、sysc は次のようになります。

  • sysd の測定成分とノイズ成分の両方を含みます。sysd のノイズ分散が λ の場合、連続時間モデル sysc のノイズ スペクトル密度で示されるレベルは Ts*λ と等しくなります。

  • sysd の推定されたパラメーターの共分散は含みません。モデルの変換中に共分散を変換する場合は、translatecov を使用します。

G

状態空間モデル sysd の状態 xd[k]sysc の状態 xc(t) にマップする行列。

xc(kTs)=G[xd[k]u[k]].

sysd の初期条件が x0 で初期入力が u0 = u[0] とすると、sysc の対応する初期条件 (k < 0u[k] = 0 と想定した場合) は次のようになります。

xc(0)=G[x0u0].

すべて折りたたむ

次の離散時間伝達関数を作成します。

H(z)=z-1z2+z+0.3

H = tf([1 -1],[1 1 0.3],0.1);

モデルのサンプル時間は Ts=0.1s です。

連続時間のゼロ次ホールドと等価のモデルを派生させます。

Hc = d2c(H)
Hc =
 
   121.7 s + 1.405e-12
  ---------------------
  s^2 + 12.04 s + 776.7
 
Continuous-time transfer function.

結果のモデル Hc を既定のゼロ次ホールド メソッドとサンプル時間 0.1 秒で離散化し、元の離散モデル H を返します。

c2d(Hc,0.1)
ans =
 
      z - 1
  -------------
  z^2 + z + 0.3
 
Sample time: 0.1 seconds
Discrete-time transfer function.

Tustin 近似法を使用して H を連続時間モデルに変換します。

Hc2 = d2c(H,'tustin');

結果のモデル Hc2 を離散化し、元の離散時間モデル H を取り戻します。

c2d(Hc2,0.1,'tustin');

離散時間伝達関数モデルを推定し、連続時間モデルに変換します。

load iddata1
sys1d = tfest(z1,2,'Ts',0.1);
sys1c = d2c(sys1d,'zoh');

連続時間伝達関数モデルを推定します。

sys2c = tfest(z1,2);

sys1c の応答と、直接推定した連続時間モデル sys2c を比較します。

compare(z1,sys1c,sys2c)

この 2 つのシステムはほぼ同じです。

同定された離散時間伝達関数モデルを連続時間に変換します。

load iddata1
sysd = tfest(z1,2,'Ts',0.1);
sysc = d2c(sysd,'zoh');

sys1c には共分散情報がありません。d2c 演算により、同定されたモデルの共分散データが失われることになります。

同じ推定コマンドと推定データでゼロ点の反復更新を使用して、共分散情報を再生成します。

opt = tfestOptions; 
opt.SearchOptions.MaxIterations = 0;
sys1c = tfest(z1,sysc,opt);

周波数応答の不確かさへの影響を解析します。

h = bodeplot(sysd,sys1c);
showConfidence(h,3)

sys1csysd の不確かさはナイキスト周波数に匹敵します。ただし、sys1c では、推定データによる情報が得られないため、周波数範囲の不確かさが大きくなります。

推定データにアクセスできない場合は、translatecov コマンドを使用します。これは、ガウス近似の公式に基づいた、モデル タイプ変換演算全体での共分散の変換です。

制限

Tustin 近似は、z = –1 で極をもつシステムに対しては定義されません。そして、z = –1 近傍に極をもつシステムに対しては悪条件です。

ゼロ次ホールド メソッドでは、z = 0 で極をもつシステムを処理できません。さらに、'zoh' 変換により、負の実極をもつシステムのモデル次数が上がります [2]。モデル次数が上がる理由は、行列の対数が負の実極を複素数極にマップするからです。単一の複素数極は、複素数時間応答を示すので物理的に無意味です。

その代わり、連続モデルのすべての複素数極が確実に共役対になるようにするため、関数 d2c は負の実極 z = –α を –α 近傍の複素共役極のペアで置き換えます。そして、この変換によってより高次の連続モデルが出力されます。たとえば、離散時間伝達関数を変換するには

H(z)=z+0.2(z+0.5)(z2+z+0.4)

次を入力します。

Ts = 0.1  % sample time 0.1 s
H = zpk(-0.2,-0.5,1,Ts) * tf(1,[1 1 0.4],Ts)
Hc = d2c(H) 

これらのコマンドにより以下の結果が出力されます。

Warning: System order was increased to handle real negative poles.
 
Zero/pole/gain:
  -33.6556 (s-6.273) (s^2 + 28.29s + 1041)
--------------------------------------------
(s^2 + 9.163s + 637.3) (s^2 + 13.86s + 1035)

Hc を離散時間に変換して戻すには、次のように入力します。

c2d(Hc,Ts)

その結果は、次のようになります。

Zero/pole/gain:
     (z+0.5) (z+0.2)
-------------------------
(z+0.5)^2 (z^2 + z + 0.4)
 
Sample time: 0.1

z = –0.5 で極/零点のペアを相殺した後に、この離散モデルは H(z) と一致します。

ヒント

  • 'method' の既定のオプションを使用して sysd を変換するには、構文 sysc = d2c(sysd,'method') を使用します。周波数プリワープ (以前に 'prewarp' メソッドと呼ばれていたもの) で tustin 変換を指定するには、構文 sysc = d2c(sysd,opts) を使用します。詳細については、d2cOptions のリファレンス ページを参照してください。

アルゴリズム

d2c は、'zoh' 変換を状態空間で実行し、行列の対数に依存します (MATLAB® ドキュメンテーションの「logm」を参照)。

変換メソッドの詳細は、連続/離散の変換方法 を参照してください。

参考文献

[1] Franklin, G.F., Powell,D.J., and Workman, M.L., Digital Control of Dynamic Systems (3rd Edition), Prentice Hall, 1997.

[2] Kollár, I., G.F. Franklin, and R. Pintelon, "On the Equivalence of z-domain and s-domain Models in System Identification," Proceedings of the IEEE® Instrumentation and Measurement Technology Conference, Brussels, Belgium, June, 1996, Vol. 1, pp. 14-19.

R2006a より前に導入