ベクトルおよび行列でサポ,トされている演算
金宝app®モデルの状态流®チャートには,ベクトルおよび行列での計算に使用する構文を定義するアクション言語プロパティがあります。アクション言語プロパティは次のとおりです。
アクション言語はmatlab®。
アクション言語はc。
詳細にいては,アクション言語構文としてのmatlabとcの相違点を参照してください。
ンデックス表記
MATLABをアクション言語として使用するチャートでは,かっこで区切られた1ベースのインデックスを使用して,ベクトルまたは行列の要素を参照します。異なる次元の@ @ンデックスはコンマで区切ります。
Cをアクション言語として使用するチャートでは,大かっこで区切られた0ベースのインデックスを使用して,ベクトルまたは行列の要素を参照します。異なる次元のesc escンデックスは,それぞれ大かっこで囲みます。
例 | アクション言語がmatlab |
アクション言語がcの場合 |
---|---|---|
ベクトルV の最初の要素 |
V (1) |
V [0] |
ベクトルV の我 番目の要素 |
V(我) |
V(张) |
行列米 の4 行5 列目の要素 |
(4、5) |
M [3] [4] |
行列米 の我 行j 列目の要素 |
M (i, j) |
M(张)(j - 1) |
二項演算
次の表は,ベクトルと行列のオペランドに対するすべての二項演算の解釈を優先順位(1 =最高,3 =最低)に従ってまとめています。二項演算は左結合であるため,どの式でも,優先度が同じ演算子は左から右の順序で評価されます。MATLABをアクション言語として使用するチャート内の行列の乗算演算子と除算演算子を除き、すべての二項演算子は要素単位の演算を行います。
演算 |
優先順位 |
アクション言語がmatlab |
アクション言語がcの場合 |
---|---|---|---|
|
1 |
行列の乗算 |
要素単位の乗算。行列の乗算には、MATLAB 関数で |
|
1 |
要素単位の乗算 |
サポ,トなし。演算 |
|
1 |
行列の右除算 |
要素単位の右除算。行列の右除算には、MATLAB 関数で |
|
1 |
要素単位の右除算 |
サポ,トなし。演算 |
|
1 |
行列の左除算 |
サポ,トなし。MATLAB関数で |
|
1 |
要素単位の左除算 |
サポ,トなし。MATLAB関数で |
|
2 |
加算 |
加算 |
|
2 |
減算 |
減算 |
|
3. |
比較,等しい |
比較,等しい |
|
3. |
比較,等しくない |
比較,等しくない |
|
3. |
サポ,トなし。演算 |
比較,等しくない |
|
3. |
サポ,トなし。演算 |
比較,等しくない |
単項演算と単項アクション
次の表は,ベクトルと行列のオペランドに対するすべての単項演算および単項アクションの解釈をまとめています。単項演算は,
二項演算子より優先順位が高くなります。
右結合であるため,どの式でも,右から左の順序で評価されます。
要素単位の演算を行います。
例 |
アクション言語がmatlab |
アクション言語がcの場合 |
---|---|---|
|
論理不是。ビット単位不是の場合は,是関数 |
詳細にいては,ビット演算とC言語のビット演算が可能を参照してください。 |
|
サポ,トなし。演算 |
論理不 |
|
負数 |
負数 |
|
サポ,トなし |
ベクトルまたは行列のすべての要素を@ @ンクリメントします。 |
|
サポ,トなし |
ベクトルまたは行列のすべての要素をデクリメントします。 |
代入演算
次の表は,ベクトルと行列のオペランドに対する代入演算の解釈をまとめています。
演算 |
アクション言語がmatlab |
アクション言語がcの場合 |
---|---|---|
|
シンプルな代入 |
シンプルな代入 |
|
サポ,トなし。式 |
|
|
サポ,トなし。式 |
|
|
サポ,トなし。式 |
|
|
サポ,トなし。式 |
|
行列の個々の要素への値の代入
チャートのアクション言語に適したインデックス付け構文を使用することにより,ベクトルまたは行列の個々のエントリに値を代入できます。
例 | アクション言語がmatlab |
アクション言語がcの場合 |
---|---|---|
ベクトルV の最初の要素に値10 を代入 |
V(1) = 10; |
V[0] = 10; |
行列米 の2行目,9列目の要素に値77を代入 |
M(2,9) = 77; |
M[1][8] = 77; |
行列のすべての要素への値の代入
MATLABをアクション言語として使用するチャートでは,単一のアクションを使用してベクトルまたは行列のすべての要素を指定できます。たとえば,次のアクションは,2行3列の行列一个
の各要素を別の値に代入します。
A = [1 2 3;4 5 6];
Cをアクション言語として使用するチャ,トでは,“スカラ,拡張”を使用して,ベクトルまたは行列のすべての要素を同じ値に設定できます。スカラ拡張は、スカラー データをベクトルや行列のデータの次元に一致するように変換します。たとえば、次のアクションは、行列一个
のすべての要素を10
に設定します。
A = 10;
スカラー拡張は,すべてのグラフィカル関数,真理値表関数,MATLAB関数,および仿真金宝app软件関数に適用されます。関数f
の仮引数をスカラ,として定義するとします。次の表で,関数呼び出しY = f(u)
のスカラ,拡張のル,ルを説明します。
出力y |
入力u |
結果 |
---|---|---|
スカラ | スカラ | スカラ,拡張は行われません。 |
スカラ | ベクトルまたは行列 | チャトはサズ不一致エラを生成します。 |
ベクトルまたは行列 | スカラ | チャ,トはスカラ,拡張を使用して Y [i][j] = f(u) |
ベクトルまたは行列 | ベクトルまたは行列 | チャ,トはスカラ,拡張を使用して Y [i][j] = f(u[i][j]) y とu のサ@ @ズが異なる場合,チャ@ @トはサ@ @ズ不一致エラ@ @を生成します。 |
複数の出力をもつ関数の場合,同じ規則が適用されますが,出力と入力がすべてベクトルまたは行列である場合は例外となります。その場合、チャ、トはサ、ズ不一致エラ、を生成し、スカラ、拡張は行われません。
Matlabをアクション言語として使用するチャ,トでは,スカラ,拡張はサポ,トされません。
MATLAB関数を使用した行列の算術演算
Cをアクション言語として使用するチャ,トでは,演算*
および/
は要素単位の乗算と除算を実行します。Cチャトで標準的な行列の乗算や除算を実行する場合はmatlab関数を使用します。
正方行列u1
とu2
に対して以下の演算を実行するとします。
標準的な行列積
Y1 = u1 * u2
を計算する。方程式
U1 * y2 = u2
を解く。方程式
Y3 * u1 = u2
を解く。
これらの計算をcチャトで完了するには,このコドを実行するmatlab関数を追加します。
函数[y1, y2, y3] = my_matrix_ops(u1, u2)% # codegenY1 = u1 * u2;%矩阵乘法Y2 = u1 \ u2;%矩阵除法从右开始Y3 = u1 / u2;%矩阵除法从左开始
Matlabをアクション言語として使用するチャ,トでは,演算*
、/
,および\
は,標準的な行列の乗除算を実行します。これらの演算はステ,トと遷移アクションで直接使用できます。