このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
パラメーターの関数
LibBlockMatrixParameter
LibBlockMatrixParameter(param, rucv, rlcv, ridx, cucv, clcv, cidx) は、与えられた行と列のユーザー制御変数 (rucv、cucv)、ループ制御変数 (rlcv、clcv)、およびインデックス (ridx、cidx) に基づいて、ブロックの行列パラメーターを返します。一般に、ブロックでは LibBlockParameter を使用する必要があります。行列パラメーターがある場合は、それを列優先のベクトルとして記述し、LibBlockParameter を介してアクセスする必要があります。
メモ
現在はループ ローリングはサポートされておらず、要求された場合 (つまり、rlcv または clcv が "" と等しくない場合) はエラーが生成されます。
行と列のインデックス引数は LibBlockParameter の引数に似ています。列のインデックス (cidx) は複素数を処理するためにオーバーロードされます。
paramlib.tlc の LibBlockMatrixParameter を参照してください。
LibBlockMatrixParameterAddr
LibBlockMatrixParameterAddr(param, rucv, rlcv, ridx, cucv, clcv, cidx) は、行列パラメーターのアドレスを返します。
メモ
LibBlockMatrixParameterAddr は、行列パラメーターのアドレスを返します。ループ ローリングはサポートされていません (つまり、rlcv と clcv はどちらも空の文字列でなければなりません)。
paramlib.tlc の LibBlockMatrixParameterAddr を参照してください。
LibBlockMatrixParameterBaseAddr
LibBlockMatrixParameterBaseAddr(param) は、行列パラメーターのベース アドレスを返します。
paramlib.tlc の LibBlockMatrixParameterBaseAddr を参照してください。
LibBlockParamSetting
LibBlockParamSetting(bType, psType) は、指定されたブロック タイプの指定されたパラメーター設定の文字列を返します。この関数に空のブロック タイプを渡すと、ブロックの ParamSettings レコードにあるパラメーター設定であると仮定されます。関数に空でないブロック タイプを渡すと、そのブロックの %<Btype>ParamSettings レコードにあるパラメーター設定であると仮定されます。
paramlib.tlc の LibBlockParamSetting を参照してください。
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*y で x と y の "両方" が非スカラー式である場合など、特定のタイプの式はサポートされないことに注意してください。
サポートされる正確な関数と構文の詳細については、調整可能なパラメーターに関するドキュメンテーションを参照してください。
警告
パラメーターのアドレスにアクセスする目的では LibBlockParameter を使用しないでください。パラメーターがインライン化されている場合に、数値が誤って参照 (&4.55) される可能性があります。この状況は LibBlockParameterAddr を使用すれば回避できます。
paramlib.tlc の LibBlockParameter を参照してください。
LibBlockParameterAddr
LibBlockParameterAddr(param, ucv, lcv, idx) は、ブロック パラメーターのアドレスを返します。
グローバル変数 InlineParams が 1 と等しい場合に LibBlockParameterAddr を使用してパラメーターにアクセスすると、変数がインライン化されずに RAM で const と宣言されます。
調整可能なロールされた変数が式に複数ある場合、式のアドレスにアクセスするとエラーになります。
paramlib.tlc の LibBlockParameterAddr を参照してください。
LibBlockParameterBaseAddr
LibBlockParameterBaseAddr(param) は、ブロック パラメーターのベース アドレスを返します。
グローバル変数 InlineParams が 1 と等しい場合に LibBlockParameterBaseAddr を使用してパラメーターにアクセスすると、変数がインライン化されずに RAM で const と宣言されます。
調整可能なロールされた変数が式に複数ある場合、式のアドレスにアクセスするとエラーになります。
paramlib.tlc の LibBlockParameterBaseAddr を参照してください。
LibBlockParameterDataTypeId
LibBlockParameterDataTypeId(param) は、指定されたブロック パラメーターのデータ型に対応する数値 ID を返します。
paramlib.tlc の LibBlockParameterDataTypeId を参照してください。
LibBlockParameterDataTypeName
LibBlockParameterDataTypeName(param, reim) は、指定されたブロック パラメーターに対応するデータ型の名前を返します。
paramlib.tlc の LibBlockParameterDataTypeName を参照してください。
LibBlockParameterDimensions
LibBlockParameterDimensions(param) は、パラメーター データの次元を指定する長さ N (N >= 1) の行ベクトルを返します。
以下に例を示します。
%assign dims = LibBlockParameterDimensions("paramName")
%assign nDims = SIZE(dims,1)
%foreach i=nDims
/* Dimension %<i+1> = %<dims[i]> */
%endforeachLibBlockParameterDimensions は、LibBlockParameterSize とは異なり、Matrix パラメーターを列優先のベクトルに変換する前のパラメーター データの次元を返します。変換は outputAsMatrix フィールドが False と指定された実行時パラメーターについて実行されます。
paramlib.tlc の LibBlockParameterDimensions を参照してください。
LibBlockParameterIsComplex
LibBlockParameterIsComplex(param) は、指定されたブロック パラメーターが複素数である場合に 1 を返します。それ以外の場合は 0 を返します。
paramlib.tlc の LibBlockParameterIsComplex を参照してください。
LibBlockParameterSize
LibBlockParameterSize(param) は、[nRows, nCols] の形式のサイズ 2 のベクトルを返します。ここで、nRows は行数、nCols は列数です。
paramlib.tlc の LibBlockParameterSize を参照してください。
LibBlockParameterString
LibBlockParameterString(param) は、ブロック パラメーターの参照 (param) に基づいて、指定されたブロック パラメーターの解釈された文字列を返します。たとえば、この関数は以下を返します。
パラメーターが行の行列の場合は
STRINGOF(param.Value[0])それ以外の場合は
STRINGOF(param.Value)
メモ
この関数を複数の行をもつ行列値のパラメーターで呼び出すとエラーになります。
LibBlockParameterValue または LibBlockParameterString を使用してパラメーター値にアクセスするだけの場合は、パラメーターを調整可能から調整不可能に変換することを検討してください。その後、ssWriteRTWParamSettingsを使用して、パラメーターの値を ファイルに書き込みます。パラメーターをインライン化すると、コード ジェネレーターによって生成されるコードでパラメーターのシンボリック名ではなく数値が使用されるため、RAM の使用量が少なくなります。model.rtw
paramlib.tlc の LibBlockParameterString を参照してください。
LibBlockParameterValue
LibBlockParameterValue(param, elIdx) は、ブロック パラメーターの参照 (param) と配列のインデックス要素 (elidx) に基づいて、パラメーターの数値を返します。関数 LibBlockParameterWidth(param) を使用して配列の幅を取得してから、elidx (有効な値は 0 ~ width-1) を使用して配列の特定の要素を取得できます。
LibBlockParameterValue または LibBlockParameterString を使用してパラメーター値にアクセスするだけの場合は、パラメーターを調整可能から調整不可能に変換することを検討してください。その後、ssWriteRTWParamSettingsを使用して、パラメーターの値を ファイルに書き込みます。パラメーターをインライン化すると、コード ジェネレーターによって生成されるコードでパラメーターのシンボリック名ではなく数値が使用されるため、RAM の使用量が少なくなります。model.rtw
例
ブロックのパラメーターに応じて異なる積分器のコードを生成する場合は次を使用します。
%assign mode = LibBlockParameterValue(Integrator, 0)
%switch (mode)
%case 1
%<CodeForIntegrator1>
%break
%case 2
%<CodeForIntegrator2>
%break
%default
Error: Unrecognized integrator value.
%break
%endswitchparamlib.tlc の LibBlockParameterValue を参照してください。
LibBlockParameterWidth
LibBlockParameterWidth(param) は、パラメーターの要素数 (幅) を返します。
の paramlib.tlcLibBlockParameterWidth を参照してください。
LibGetParameterValue
LibGetParameterValue は、model.rtw の ModelParameters レコードに記述されているモデル パラメーターのデータ ベクトルを返します。たとえば、次のようなことができます。
%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 を参照してください。