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

c2d

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

構文

sysd = c2d(sys,Ts)
sysd = c2d(sys,Ts,method)
sysd = c2d(sys,Ts,opts)
[sysd,G] = c2d(sys,Ts,method)
[sysd,G] = c2d(sys,Ts,opts)

説明

sysd = c2d(sys,Ts) は、入力でのゼロ次ホールドとサンプル時間 Ts 秒を使用して、連続時間動的システム モデル sys を離散化します。

sysd = c2d(sys,Ts,method) は、指定された離散化手法 method を使用して sys を離散化します。

sysd = c2d(sys,Ts,opts) は、c2dOptions コマンドを使用して指定されたオプション セット opts を使用して sys を離散化します。

[sysd,G] = c2d(sys,Ts,method) は、状態空間モデル sys の連続初期条件 x0u0 を離散時間初期状態ベクトル x[0] にマッピングする行列 G を返します。method はオプションです。追加の離散化オプションを指定するには、[sysd,G] = c2d(sys,Ts,opts) を使用します。

入力引数

sys

連続時間動的システム モデル (周波数応答データ モデルを除く)。sys は、'matched' 離散化手法が SISO システムだけをサポートする場合を除き、SISO または MIMO システムを表すことができます。

sys は、入出力遅延または内部むだ時間をもつことができますが、'matched''impulse' および least-squares' メソッドは内部むだ時間をもつ状態空間モデルをサポートしていません。

次の同定された線形システムは直接離散化できません。

  • FunctionType'c' である idgrey モデル。最初に idss モデルに変換します。

  • idproc モデル。最初に idtf または idpoly モデルに変換します。

構文 [sysd,G] = c2d(sys,Ts,opts) では、sys は状態空間モデルでなければなりません。

Ts

サンプル時間。

method

離散化手法。以下のいずれかの値として指定。

  • 'zoh' - ゼロ次ホールド (既定) 。サンプル時間 Ts の間、制御入力は区分的に一定であると仮定します。

  • 'foh' - 三角形近似 (修正された 1 次ホールド。サンプル時間 Ts の間、制御入力は区分的に線形であると仮定します。

  • 'impulse' — インパルス不変法による離散化

  • 'tustin' — 双一次 (Tustin) メソッド

  • 'matched' — 極-零点マッチング法

  • 'least-squares' — 最小二乗法

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

opts

離散化オプション。c2dOptions を使用して opts を作成します。

出力引数

sysd

入力システム sys と同じタイプの離散時間モデル。

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

  • sys の測定成分とノイズ成分の両方を含みます。連続時間同定モデル sys のイノベーション分散 λ はその NoiseVariance プロパティに格納され、ノイズ スペクトルのスペクトル密度の強度と解釈されます。このため、sysd のノイズ分散は λ/Ts になります。

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

G

状態空間モデル sys の連続時間初期条件 x0 および u0 を、次のように離散時間初期状態ベクトル x[0] に関係付ける行列です。

x[0]=G[x0u0]

むだ時間をもつ状態空間モデルの場合、むだ時間の離散化によって生じた追加の状態を考慮して、c2d は行列 G をゼロでパディングします。離散化システムにおけるむだ時間のモデル化については、連続/離散の変換方法を参照してください。

すべて折りたたむ

次の連続時間の伝達関数を離散化します。

H(s)=e-0.3ss-1s2+4s+5.

このシステムには 0.3 秒の入力遅延があります。サンプル時間 Ts = 0.1 s での三角形 (1 次ホールド) 近似を使用してシステムを離散化します。

H = tf([1 -1],[1 4 5],'InputDelay', 0.3); 
Hd = c2d(H,0.1,'foh');

連続時間システムと離散化システムのステップ応答を比較します。

step(H,'-',Hd,'--')

入力のゼロ次ホールドと 10 Hz のサンプリング レートを使用して、次の遅延伝達関数を離散化します。

H(s)=e-0.25s10s2+3s+10.

h = tf(10,[1 3 10],'IODelay',0.25); 
hd = c2d(h,0.1)
hd =
 
           0.01187 z^2 + 0.06408 z + 0.009721
  z^(-3) * ----------------------------------
                 z^2 - 1.655 z + 0.7408
 
Sample time: 0.1 seconds
Discrete-time transfer function.

この例では、離散化されたモデル hd に 3 サンプリング周期の遅延があります。離散化アルゴリズムは、残る半周期の遅延を hd の係数に吸収します。

連続時間モデルと離散化モデルのステップ応答を比較します。

step(h,'--',hd,'-')

2 つの状態と 1 つの入力遅延をもつ連続時間状態空間モデルを作成します。

sys = ss(tf([1,2],[1,4,2]));
sys.InputDelay = 2.7
sys =
 
  A = 
       x1  x2
   x1  -4  -2
   x2   1   0
 
  B = 
       u1
   x1   2
   x2   0
 
  C = 
        x1   x2
   y1  0.5    1
 
  D = 
       u1
   y1   0
 
  Input delays (seconds): 2.7 
 
Continuous-time state-space model.

Tustin 離散化手法と Thiran フィルターを使用してモデルを離散化し、非整数遅延をモデル化します。サンプル時間 Ts は 1 秒です。

opt = c2dOptions('Method','tustin','FractDelayApproxOrder',3);
sysd1 = c2d(sys,1,opt)
sysd1 =
 
  A = 
              x1         x2         x3         x4         x5
   x1    -0.4286    -0.5714   -0.00265    0.06954      2.286
   x2     0.2857     0.7143  -0.001325    0.03477      1.143
   x3          0          0    -0.2432     0.1449    -0.1153
   x4          0          0       0.25          0          0
   x5          0          0          0      0.125          0
 
  B = 
             u1
   x1  0.002058
   x2  0.001029
   x3         8
   x4         0
   x5         0
 
  C = 
              x1         x2         x3         x4         x5
   y1     0.2857     0.7143  -0.001325    0.03477      1.143
 
  D = 
             u1
   y1  0.001029
 
Sample time: 1 seconds
Discrete-time state-space model.

これにより、離散化されたモデルは、3 次 Thiran フィルターに対応する 3 つの追加状態 x3x4x5 を含むようになります。むだ時間をサンプル時間で除算すると 2.7 となるので、3 次 Thiran フィルター ('FractDelayApproxOrder' = 3) はむだ時間全体を近似できます。

連続時間伝達関数を推定し、離散化します。

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

2 次離散時間伝達関数を推定します。

sys2d = tfest(z1,2,'Ts',0.1);

離散化された連続時間の伝達関数モデル sys1d の応答と、直接推定した離散時間モデル sys2d を比較します。

compare(z1,sys1d,sys2d)

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

同定された状態空間モデルを離散化して、応答の 1 ステップ先の予測子を構築します。

推定データを使用して、連続時間で同定された状態空間モデルを作成します。

load iddata2
sysc = ssest(z2,4);

sysc の 1 ステップ先の予測応答を予測します。

predict(sysc,z2)

モデルを離散化します。

sysd = c2d(sysc,0.1,'zoh');

離散化モデル sysd から予測子モデルを作成します。

[A,B,C,D,K] = idssdata(sysd);
Predictor = ss(A-K*C,[K B-K*D],C,[0 D],0.1);

Predictor は測定した出力信号と入力信号 ([z1.y z1.u]) を使用して、sysc の 1 ステップ先を予測した応答を計算する 2 入力モデルです。

予測子モデルをシミュレートし、predict コマンドと同じ応答を得ます。

lsim(Predictor,[z2.y,z2.u])

予測子モデルのシミュレーションの応答は、predict(sysc,z2) と同じになります。

ヒント

  • method の既定のオプションを使用して sys を離散化するには、構文 sysd = c2d(sys,Ts,method) を使用します。追加の離散化オプションを指定するには、構文 sysd = c2d(sys,Ts,opts) を使用します。

  • 周波数プリワーピング (以前に 'prewarp' 手法と呼ばれていたもの) による tustin 手法を指定するには、c2dOptionsPrewarpFrequency オプションを使用します。

アルゴリズム

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

R2006a より前に導入