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

tunableSS

調整可能な固定次状態空間モデル

構文

blk = tunableSS(name,Nx,Ny,Nu)
blk = tunableSS(name,Nx,Ny,Nu,Ts)
blk = tunableSS(name,sys)
blk = tunableSS(...,Astruct)

説明

調整可能な固定次状態空間モデルを作成するためのモデル オブジェクト。tunableSS では、パラメーターの調査や、systune または looptune などの調整コマンドを使用した自動調整用に、指定された次元の状態空間モデルをパラメーター化できます。

tunableSS はパラメトリック モデルの制御設計ブロック ファミリの一部です。その他の制御設計ブロックには、tunablePIDtunableGain および tunableTF があります。

構築

blk = tunableSS(name,Nx,Ny,Nu) は、name という名前の連続時間パラメトリック状態空間モデルを作成します。状態空間モデル blk には Nx 状態、Ny 出力、および Nu 入力があります。調整可能なパラメーターは、状態空間モデルの行列 A、B、C、および D のエントリです。

blk = tunableSS(name,Nx,Ny,Nu,Ts) は、サンプル時間 Ts をもつ離散時間パラメトリック状態空間モデルを作成します。

blk = tunableSS(name,sys) は、動的システム sys を使用してパラメトリック状態空間モデルを次元化し、そのサンプル時間を設定して、調整可能なパラメーターを初期化します。

blk = tunableSS(...,Astruct) は、行列 AAstruct で指定されている構造体に制限されるパラメトリック状態空間モデルを作成します。

入力引数

name

パラメトリック状態空間モデル Name'C0' などの文字ベクトルとして指定します (プロパティを参照)。

Nx

パラメトリック状態空間モデル blk の状態 (次元) の数を指定する非負の整数。

Ny

パラメトリック状態空間モデル blk の出力の数を指定する非負の整数。

Nu

パラメトリック状態空間モデル blk の入力の数を指定する非負の整数。

Ts

スカラーのサンプル時間。

Astruct

パラメトリック状態空間モデル blk の行列 A の形式に対する制約。次のいずれかの値として指定します。

Astruct の値行列 A の構造
'tridiag'A は、三角対角です。三角対角形式では、A は、主対角内、主対角より下側の最初の対角、および主対角の上側の最初の対角にのみ自由要素をもちます。A の残りの要素は 0 に固定されます。
'full'A は非スパースです (A のすべてのエントリは自由パラメーターです)。
'companion'A はコンパニオン形式です。コンパニオン形式では、システムの特性多項式は、行列 A の右端の列に明示的に現れます。詳細は、canon を参照してください。

Astruct を指定しない場合、blk の既定値は 'tridiag' 形式になります。

sys

状態の数、入力と出力の数、サンプル時間、blk のパラメーターの初期値を提供する動的システム モデル。次元と初期パラメーター値を取得するため、tunableSSsysAstruct で指定された構造の状態空間モデルに変換します。Astruct を省略した場合、tunableSSsys を三角対角状態空間形式に変換します。

プロパティ

A, B, C, D

調整可能な状態空間モデル blk の状態空間行列 A、B、C、および D のパラメーター化。

blk.Ablk.Bblk.C および blk.Dparam.Continuous オブジェクトです。これらの param.Continuous オブジェクトに関する一般的な情報は、param.Continuous オブジェクトのリファレンス ページを参照してください。

blk.Ablk.Bblk.C および blk.D の次のフィールドは、hinfstruct を使用して blk を調整するときに使用されます。

フィールド説明
Value

パラメーター化された状態空間行列のエントリの現在の値。たとえば、blk.A.Valueblk の行列 A の値を含みます。

hinfstruct は、値が blk.Gain.Free によって固定されたものを除き、blk.A.Valueblk.B.Valueblk.C.Value および blk.D.Value のすべてのエントリを調整します。

Free

対応する状態空間行列パラメーターが固定または自由のどちらのパラメーターかを決定する論理値の 2 次元の配列。以下に例を示します。

  • blk.A.Free(i,j) = 1 である場合、blk.A.Value(i,j) は調整可能なパラメーターです。

  • blk.A.Free(i,j) = 0 の場合、blk.A.Value(i,j) は固定されます。

既定: 既定では、BC および D のすべてのエントリは調整可能です。A の既定の自由エントリは、次のように Astruct の値によって異なります。

  • 'tridiag'blk.A.Free の三重対角のエントリは 1 です。それ以外は 0 です。

  • 'full'blk.A.Free のすべてのエントリは 0 です。

  • 'companion'blk.A.Free(1,:) = 1 および blk.A.Free(j,j-1) = 1。他のすべてのエントリは 0 です。

Minimum

パラメーターの最小値。このプロパティは、パラメーターの調整された値に下限を設定します。たとえば、blk.A.Minimum(1,1) = 0 と設定すると、行列 A の最初のエントリは必ず正になります。

既定: -Inf

Maximum

パラメーターの最大値。このプロパティは、パラメーターの調整された値に上限を設定します。たとえば、blk.A.Maximum(1,1) = 0 と設定すると、行列 A の最初のエントリは必ず負になります。

既定: Inf

StateName

状態名。次のいずれかとして指定します。

  • 文字ベクトル — 'velocity' などの 1 次モデルの場合。

  • 文字ベクトルの cell 配列 — 2 つ以上の状態をもつモデルの場合。

  • '' — 名前のない状態の場合。

既定値: すべての状態に対して ''

StateUnit

状態単位。以下のいずれかとして指定します。

  • 文字ベクトル — 'velocity' などの 1 次モデルの場合。

  • 文字ベクトルの cell 配列 — 2 つ以上の状態をもつモデルの場合。

  • '' — 単位が指定されない状態の場合。

各状態が表現される単位を記録するために StateUnit を使用します。StateUnit はシステムの動作に影響しません。

既定値: すべての状態に対して ''

Ts

サンプル時間。連続時間モデルの場合、Ts = 0。離散時間モデルの場合、Ts はサンプリング周期を表す正のスカラーです。この値は、モデルの TimeUnit プロパティで指定される単位で表されます。指定のないサンプル時間を伴う離散時間モデルを示すには、Ts = -1 と設定します。

このプロパティを変更してもモデルの離散化やリサンプリングは行われません。

既定値: 0 (連続時間)

TimeUnit

モデル内の時間変数、サンプル時間 Ts および何らかのむだ時間の単位。以下のいずれかの値として指定します。

  • 'nanoseconds'

  • 'microseconds'

  • 'milliseconds'

  • 'seconds'

  • 'minutes'

  • 'hours'

  • 'days'

  • 'weeks'

  • 'months'

  • 'years'

このプロパティを変更しても他のプロパティには影響しないため、システム全体の動作が変更されます。chgTimeUnit を使用して、システム動作を変更せずに時間単位を変換します。

既定値: 'seconds'

InputName

入力チャネル名。以下のいずれかとして指定します。

  • 文字ベクトル — 単入力モデルの場合 (たとえば 'controls' など)。

  • 文字ベクトルの cell 配列 — 多入力モデルの場合。

または、自動的なベクトル拡張を使用して多入力モデルの入力名を割り当てます。たとえば、sys が 2 入力モデルである場合は、以下のようになります。

sys.InputName = 'controls';

入力名は自動的に {'controls(1)';'controls(2)'} へと拡張されます。

省略形表記 u を使用して、InputName プロパティを参照できます。たとえば、sys.usys.InputName と同じです。

以下を含めて、入力チャネル名はいくつかの用途をもちます。

  • モデル表示とプロット上のチャネルの識別

  • MIMO システムのサブシステムの抽出

  • モデル相互接続時における接続点の指定

既定値: すべての入力チャネルに対する ''

InputUnit

入力チャネル単位。以下のいずれかとして指定します。

  • 文字ベクトル — 単入力モデルの場合 (たとえば 'seconds' など)。

  • 文字ベクトルの cell 配列 — 多入力モデルの場合。

InputUnit を使用して入力信号単位を追跡します。InputUnit はシステムの動作に影響しません。

既定値: すべての入力チャネルに対する ''

InputGroup

入力チャネル グループ。InputGroup プロパティによって、MIMO システムの入力チャネルをグループに割り当て、各グループを名前で参照することができます。入力グループを構造体として指定します。この構造体においてフィールド名はグループ名であり、フィールド値は各グループに属する入力チャネルです。以下に例を示します。

sys.InputGroup.controls = [1 2];
sys.InputGroup.noise = [3 5];

これは、入力チャネル 1、2 および 3、5 をそれぞれ含む controls および noise という名前の入力グループを作成します。その後、以下を使用して controls 入力からすべての出力にサブシステムを抽出できます。

sys(:,'controls')

既定値: フィールドのない構造体

OutputName

出力チャネル名。次のいずれかとして指定されます。

  • 文字ベクトル — 単出力モデルの場合。たとえば、'measurements' とします。

  • 文字ベクトルの cell 配列 — 多出力モデルの場合。

または、自動的なベクトル拡張を使用して多出力モデルの出力名を割り当てます。たとえば、sys が 2 出力力モデルである場合は、以下のようになります。

sys.OutputName = 'measurements';

出力名は自動的に {'measurements(1)';'measurements(2)'} へと拡張されます。

省略形表記 y を使用して、OutputName プロパティを参照できます。たとえば、sys.ysys.OutputName と同じです。

以下を含めて、出力チャネル名はいくつかの用途をもちます。

  • モデル表示とプロット上のチャネルの識別

  • MIMO システムのサブシステムの抽出

  • モデル相互接続時における接続点の指定

既定値: すべての出力チャネルに対して ''

OutputUnit

出力チャネル単位。次のいずれかとして指定されます。

  • 文字ベクトル — 単出力モデルの場合。たとえば、'seconds' とします。

  • 文字ベクトルの cell 配列 — 多出力モデルの場合。

OutputUnit を使用して出力信号単位を追跡します。OutputUnit はシステムの動作に影響しません。

既定値: すべての出力チャネルに対して ''

OutputGroup

出力チャネル グループ。OutputGroup プロパティによって、MIMO システムの出力チャネルをグループに割り当て、各グループを名前で参照できます。出力グループを構造体として指定します。この構造体内においてフィールド名はグループ名であり、フィールド値は各グループに属する出力チャネルです。以下に例を示します。

sys.OutputGroup.temperature = [1];
sys.InputGroup.measurement = [3 5];

これは、出力チャネル 1 および 3、5 をそれぞれ含む temperature および measurement という名前の出力グループを作成します。その後、以下を使用してすべての入力から measurement 出力にサブシステムを抽出できます。

sys('measurement',:)

既定値: フィールドのない構造体

Name

システム名。文字ベクトルとして指定します。たとえば、'system_1' とします。

既定値: ''

Notes

システムに関連付ける任意のテキスト。string または文字ベクトルの cell 配列として格納されます。プロパティには指定したデータ型が格納されます。たとえば、sys1sys2 が動的システム モデルである場合、その Notes プロパティを次のように設定できます。

sys1.Notes = "sys1 has a string.";
sys2.Notes = 'sys2 has a character vector.';
sys1.Notes
sys2.Notes
ans = 

    "sys1 has a string."


ans =

    'sys2 has a character vector.'

既定値: [0×1 string]

UserData

システムに関連付ける任意のデータ型。任意の MATLAB® データ型として指定します。

既定値: []

ゼロの行列 D のあるパラメーター化された 5 次 SISO モデルを作成します。

 blk = tunableSS('ssblock',5,1,1);
 blk.D.Value = 0;      % set D = 0
 blk.D.Free = false;   % fix D to zero

既定では、行列 A は三角対角形式です。コンパニオン形式でモデルをパラメーター化するには、'companion' 入力引数を次のように使用します。

 blk = tunableSS('ssblock',5,1,1,'companion');
 blk.D.Value = 0;      % set D = 0
 blk.D.Free = false;   % fix D to zero

パラメトリック状態空間モデルを作成し、名前を入力に割り当てます。

blk = tunableSS('ssblock',5,2,2) % 5 states, 2 outputs, 2 inputs
blk.InputName = {'Xerror','Yerror'} % assign input names

ヒント

  • Astruct 入力引数を使用して、パラメトリック状態空間モデルの行列 A の構造を制限します。状態空間行列に追加構造制約を課すには、フィールド blk.A.Freeblk.B.Freeblk.C.Freeblk.D.Free を使用してパラメーター行列の具体的なエントリの値を固定します。

    たとえば、blk.B(i,j) の値を固定するには、blk.B.Free(i,j) = 0 を設定します。hinfstructblk.B(i,j) を調整できるようにするには、blk.B.Free(i,j) = 1 を設定します。

  • tunableSS パラメトリック モデルを数値 (調整不可) モデル オブジェクトに変換するには、sstfzpk などのモデル コマンドを使用します。

互換性についての考慮事項

すべて展開する

R2016a での動作変更

R2016a で導入