Main Content

パラメーターの関数

LibBlockMatrixParameter

LibBlockMatrixParameter(param, rucv, rlcv, ridx, cucv, clcv, cidx) は、与えられた行と列のユーザー制御変数 (rucvcucv)、ループ制御変数 (rlcvclcv)、およびインデックス (ridxcidx) に基づいて、ブロックの行列パラメーターを返します。一般に、ブロックでは LibBlockParameter を使用する必要があります。行列パラメーターがある場合は、それを列優先のベクトルとして記述し、LibBlockParameter を介してアクセスする必要があります。

メモ

現在はループ ローリングはサポートされておらず、要求された場合 (つまり、rlcv または clcv"" と等しくない場合) はエラーが生成されます。

行と列のインデックス引数は LibBlockParameter の引数に似ています。列のインデックス (cidx) は複素数を処理するためにオーバーロードされます。

paramlib.tlcLibBlockMatrixParameter を参照してください。

LibBlockMatrixParameterAddr

LibBlockMatrixParameterAddr(param, rucv, rlcv, ridx, cucv, clcv, cidx) は、行列パラメーターのアドレスを返します。

メモ

LibBlockMatrixParameterAddr は、行列パラメーターのアドレスを返します。ループ ローリングはサポートされていません (つまり、rlcvclcv はどちらも空の文字列でなければなりません)。

paramlib.tlcLibBlockMatrixParameterAddr を参照してください。

LibBlockMatrixParameterBaseAddr

LibBlockMatrixParameterBaseAddr(param) は、行列パラメーターのベース アドレスを返します。

paramlib.tlcLibBlockMatrixParameterBaseAddr を参照してください。

LibBlockParamSetting

LibBlockParamSetting(bType, psType) は、指定されたブロック タイプの指定されたパラメーター設定の文字列を返します。この関数に空のブロック タイプを渡すと、ブロックの ParamSettings レコードにあるパラメーター設定であると仮定されます。関数に空でないブロック タイプを渡すと、そのブロックの %<Btype>ParamSettings レコードにあるパラメーター設定であると仮定されます。

paramlib.tlcLibBlockParamSetting を参照してください。

LibBlockParameter

LibBlockParameter(param, ucv, lcv, sigIdx) は、パラメーターの参照 (param)、ユーザー制御変数 (ucv)、ループ制御変数 (lcv)、信号インデックス (sigIdx)、およびパラメーターのインライン化の状態に基づいて、ブロック パラメーターの参照を返します。戻り値は有効な rvalue (式の右辺の値) です。次に例を示します。

ケース関数呼び出し生成

1

LibBlockParameter(Gain, "i", lcv, sigIdx)rtP.blockname[i]

2

LibBlockParameter(Gain, "i", lcv, sigIdx)rtP.blockname

3

LibBlockParameter(Gain, "", lcv, sigIdx)p_Gain[i]

4

LibBlockParameter(Gain, "", lcv, sigIdx) p_Gain

5

LibBlockParameter(Gain, "", lcv, sigIdx)4.55

6

LibBlockParameter(Gain, "", lcv, sigIdx)rtP.blockname.re

7

LibBlockParameter(Gain, "", lcv, sigIdx)rtP.blockname.im

LibBlockParameter の基本的な動作を示すために、Gain[0]=4.55 である非複素数のベクトル信号と仮定します。

LibBlockParameter(Gain, "", "i", 0)
ケースロールパラメーターのインライン化タイプ結果メモリに必要

1

0

あり

スカラー

4.55

なし

2

1

あり

スカラー

4.55

なし

3

0

あり

ベクトル

4.55

なし

4

1

あり

ベクトル

p_Gain[i]

あり

5

0

なし

スカラー

rtP.blk.Gain

なし

6

0

なし

スカラー

rtP.blk.Gain

なし

7

0

なし

ベクトル

rtP.blk.prm[0]

なし

8

0

なし

ベクトル

p.Gain[i]

あり

ケース 4 に注目してください。「パラメーターのインライン化」が「あり」ですが、for ループの内部でアクセスされるため、パラメーターをメモリ (RAM) に配置しなければなりません。

メモ

LibBlockParameter をインライン パラメーターやパラメーターの調整で使用する場合は式もサポートされます。

たとえば、パラメーター フィールドが MATLAB®'2*a' だった場合、LibBlockParameter は C 式 '(2*a)' を返します。LibBlockParameter でサポートされる関数のリストは、関数 FcnConvertNodeToExpr および FcnConvertIdToFcn で決まります。機能を強化するには、それらのいずれかの関数を拡張または更新してください。

x*yxy"両方" が非スカラー式である場合など、特定のタイプの式はサポートされないことに注意してください。

サポートされる正確な関数と構文の詳細については、調整可能なパラメーターに関するドキュメンテーションを参照してください。

警告

パラメーターのアドレスにアクセスする目的では LibBlockParameter を使用しないでください。パラメーターがインライン化されている場合に、数値が誤って参照 (&4.55) される可能性があります。この状況は LibBlockParameterAddr を使用すれば回避できます。

paramlib.tlcLibBlockParameter を参照してください。

LibBlockParameterAddr

LibBlockParameterAddr(param, ucv, lcv, idx) は、ブロック パラメーターのアドレスを返します。

グローバル変数 InlineParams が 1 と等しい場合に LibBlockParameterAddr を使用してパラメーターにアクセスすると、変数がインライン化されずに RAM で const と宣言されます。

調整可能なロールされた変数が式に複数ある場合、式のアドレスにアクセスするとエラーになります。

paramlib.tlcLibBlockParameterAddr を参照してください。

LibBlockParameterBaseAddr

LibBlockParameterBaseAddr(param) は、ブロック パラメーターのベース アドレスを返します。

グローバル変数 InlineParams が 1 と等しい場合に LibBlockParameterBaseAddr を使用してパラメーターにアクセスすると、変数がインライン化されずに RAM で const と宣言されます。

調整可能なロールされた変数が式に複数ある場合、式のアドレスにアクセスするとエラーになります。

paramlib.tlcLibBlockParameterBaseAddr を参照してください。

LibBlockParameterDataTypeId

LibBlockParameterDataTypeId(param) は、指定されたブロック パラメーターのデータ型に対応する数値 ID を返します。

paramlib.tlcLibBlockParameterDataTypeId を参照してください。

LibBlockParameterDataTypeName

LibBlockParameterDataTypeName(param, reim) は、指定されたブロック パラメーターに対応するデータ型の名前を返します。

paramlib.tlcLibBlockParameterDataTypeName を参照してください。

LibBlockParameterDimensions

LibBlockParameterDimensions(param) は、パラメーター データの次元を指定する長さ N (N >= 1) の行ベクトルを返します。

次に例を示します。

%assign dims  = LibBlockParameterDimensions("paramName")
%assign nDims = SIZE(dims,1)
%foreach i=nDims
   /* Dimension %<i+1> = %<dims[i]> */
%endforeach

LibBlockParameterDimensions は、LibBlockParameterSize とは異なり、Matrix パラメーターを列優先のベクトルに変換する前のパラメーター データの次元を返します。変換は outputAsMatrix フィールドが False と指定された実行時パラメーターについて実行されます。

paramlib.tlcLibBlockParameterDimensions を参照してください。

LibBlockParameterIsComplex

LibBlockParameterIsComplex(param) は、指定されたブロック パラメーターが複素数である場合に 1 を返します。それ以外の場合は 0 を返します。

paramlib.tlcLibBlockParameterIsComplex を参照してください。

LibBlockParameterSize

LibBlockParameterSize(param) は、[nRows, nCols] の形式のサイズ 2 のベクトルを返します。ここで、nRows は行数、nCols は列数です。

paramlib.tlcLibBlockParameterSize を参照してください。

LibBlockParameterString

LibBlockParameterString(param) は、ブロック パラメーターの参照 (param) に基づいて、指定されたブロック パラメーターの解釈された文字列を返します。たとえば、この関数は以下を返します。

  • パラメーターが行の行列の場合は STRINGOF(param.Value[0])

  • それ以外の場合は STRINGOF(param.Value)

メモ

この関数を複数の行をもつ行列値のパラメーターで呼び出すとエラーになります。

LibBlockParameterValue または LibBlockParameterString を使用してパラメーター値にアクセスするだけの場合は、パラメーターを調整可能から調整不可能に変換することを検討してください。その後、ssWriteRTWParamSettingsを使用して、パラメーターの値を model.rtw ファイルに書き込みます。パラメーターをインライン化すると、コード ジェネレーターによって生成されるコードでパラメーターのシンボリック名ではなく数値が使用されるため、RAM の使用量が少なくなります。

paramlib.tlcLibBlockParameterString を参照してください。

LibBlockParameterValue

LibBlockParameterValue(param, elIdx) は、ブロック パラメーターの参照 (param) と配列のインデックス要素 (elidx) に基づいて、パラメーターの数値を返します。関数 LibBlockParameterWidth(param) を使用して配列の幅を取得してから、elidx (有効な値は 0width-1) を使用して配列の特定の要素を取得できます。

LibBlockParameterValue または LibBlockParameterString を使用してパラメーター値にアクセスするだけの場合は、パラメーターを調整可能から調整不可能に変換することを検討してください。その後、ssWriteRTWParamSettingsを使用して、パラメーターの値を model.rtw ファイルに書き込みます。パラメーターをインライン化すると、コード ジェネレーターによって生成されるコードでパラメーターのシンボリック名ではなく数値が使用されるため、RAM の使用量が少なくなります。

ブロックのパラメーターに応じて異なる積分器のコードを生成する場合は次を使用します。

%assign mode = LibBlockParameterValue(Integrator, 0)
%switch (mode)
   %case 1
      %<CodeForIntegrator1>
      %break
   %case 2
      %<CodeForIntegrator2>
      %break
   %default
      Error: Unrecognized integrator value.
      %break
%endswitch

paramlib.tlcLibBlockParameterValue を参照してください。

LibBlockParameterWidth

LibBlockParameterWidth(param) は、パラメーターの要素数 (幅) を返します。

paramlib.tlcLibBlockParameterWidth を参照してください。

LibGetParameterValue

LibGetParameterValue は、model.rtwModelParameters レコードに記述されているモデル パラメーターのデータ ベクトルを返します。たとえば、次のようなことができます。

%assign numRowValues = SIZE(LibGetParameterValue(RowIndex), 1)
コード ジェネレーターでは、モデル パラメーターでないレコードに対しては record.Value を返します。record.Value を取得する代わりに、関数 LibGetParameterValue を使用してモデル パラメーターのデータ ベクトルにアクセスします。

関数 LibGetParameterValue から返されるモデル パラメーターのデータ ベクトルが数値スカラーであり、数値式に対してエラーになる場合は、[0] を付加します。たとえば、次の場合について考えます。

%assign sum = LibGetParameterValue(RowIndex) + 10
次のエラーが返されます。
“The + operator only works on numeric arguments”
この場合、式を次のように変更します。
%assign sum = LibGetParameterValue(RowIndex)[0] + 10

paramlib.tlcLibGetParameterValue を参照してください。

関連するトピック