Target Language Compiler 関数の規則
これらの関数の使用例は
および matlabroot
/toolbox/simulink/blocks/tlc_c
にあります。対応する MEX S-Function のソース コードは matlabroot
/toolbox/simulink/sfuntemplates/tlc_c
または matlabroot
/simulink/src
にあります。MATLAB® ファイルの S-Function および MEX ファイルの実行可能ファイル (たとえば、matlabroot
/toolbox/simulink/simdemos/simfeatures/src
) は sfunction
.mex*
または matlabroot
/toolbox/simulink/blocks
にあります。上記フォルダー名のいずれかをクリックすると、MATLAB 内でそのフォルダーに移動し、MATLAB の現在のフォルダー ブラウザーにフォルダーの内容を表示します。matlabroot
/toolbox/simulink/simdemos/simfeatures
一般的な関数の引数
複数の関数が類似または同一の引数を受け取ります。リファレンス ページを簡略化するために、そうした引数の一部について、リファレンス ページではなく以下に詳細にドキュメント化しています。
引数 | 説明 |
---|---|
| 0 から始まる入力または出力端子のインデックスを指します。たとえば、S-Function の最初の入力端子は 0 です。 |
| ユーザー制御変数。これは、 |
| ループ制御変数。これは通常、2 番目の |
| 信号インデックス。信号要素インデックスと呼ぶこともあります。入力信号または出力信号の特定の要素に直接アクセスする際には、各種ライブラリ ルーチンの呼び出しの
3 つの引数 |
| パラメーター インデックス。パラメーター要素インデックスと呼ぶこともあります。このパラメーターの処理は上記の |
| 状態インデックス。状態ベクトル要素インデックスと呼ぶこともあります。整数に評価される必要があり、最初の要素が |
sigIdx のオーバーロード
信号インデックス (sigIdx
は idx
と記述されることもある) は、ほとんどのライブラリ関数に渡されるときにオーバーロードできます。たとえば、信号の要素 3 に関心があり、ucv=""
、lcv=""
であるものとします。次の表では、以下が示されています。
sigIdx
の値参照信号が複素数かどうか
sigIdx
を使用する関数の戻り値返される変数の例
返される変数のデータ型
なお、次の表の "コンテナー" とは、tmwtypes.h
で定義されている、creal_T
などの数値の実数部と虚数部の両方をカプセル化するオブジェクトを指します。
sigIdx | 複素数 | 関数が返すもの | 例 | データ 型 |
---|---|---|---|---|
"re3" | あり | 要素 3 の実数部 |
|
|
"im3" | あり | 要素 3 の虚数部 |
|
|
"3" | あり | 要素 3 の複素数コンテナー |
|
|
3 | あり | 要素 3 の複素数コンテナー |
|
|
"re3" | なし | 要素 3 |
|
|
"im3" | なし |
| N/A | N/A |
"3" | なし | 要素 3 |
|
|
3 | なし | 要素 3 |
|
|
次に、以下を仮定します。
信号の要素 3 に関心がある。
(
ucv = "i"
かつlcv == ""
) または (ucv = ""
かつlcv = "i"
)。
次の表では、idx
の値、信号が複素数かどうか、および idx
を使用する関数の戻り値を示します。
sigIdx | 複素数 | 関数が返すもの |
---|---|---|
"re3" | あり | 要素 |
"im3" | あり | 要素 |
"3" | あり | 要素 |
3 | あり | 要素 |
"re3" | なし | 要素 |
"im3" | なし |
|
"3" | なし | 要素 |
3 | なし | 要素 |
メモ
ベクトル インデックスは幅の広い信号の場合にのみ追加されます。
ucv
が空の string (""
) でない場合、上記の例ではsigIdx
の代わりにucv
が使用され、lcv
とsigIdx
がいずれも無視されます。ucv
が空であるがlcv
が空でない場合は、関数は"&y%<portIdx>[%<lcv>]"
を返し、sigIdx
は無視されます。ローラー内でアクセスされる変数がローラーで宣言および初期化されているものと想定されています。ローラー内でアクセスされる変数は、
%roll
命令への引数としてrollVars
を使用して指定する必要があります。