主要内容

ベクトルおよび行列でサポ,トされている演算

金宝app®モデルの状态流®チャートには,ベクトルおよび行列での計算に使用する構文を定義するアクション言語プロパティがあります。アクション言語プロパティは次のとおりです。

  • アクション言語はmatlab®

  • アクション言語はc。

詳細にいては,アクション言語構文としてのmatlabとcの相違点を参照してください。

ンデックス表記

MATLABをアクション言語として使用するチャートでは,かっこで区切られた1ベースのインデックスを使用して,ベクトルまたは行列の要素を参照します。異なる次元の@ @ンデックスはコンマで区切ります。

Cをアクション言語として使用するチャートでは,大かっこで区切られた0ベースのインデックスを使用して,ベクトルまたは行列の要素を参照します。異なる次元のesc escンデックスは,それぞれ大かっこで囲みます。

アクション言語がmatlab

アクション言語がcの場合
ベクトルVの最初の要素 V (1) V [0]
ベクトルV番目の要素 V(我) V(张)
行列45列目の要素 (4、5) M [3] [4]
行列j列目の要素 M (i, j) M(张)(j - 1)

二項演算

次の表は,ベクトルと行列のオペランドに対するすべての二項演算の解釈を優先順位(1 =最高,3 =最低)に従ってまとめています。二項演算は左結合であるため,どの式でも,優先度が同じ演算子は左から右の順序で評価されます。MATLABをアクション言語として使用するチャート内の行列の乗算演算子と除算演算子を除き、すべての二項演算子は要素単位の演算を行います。

演算

優先順位

アクション言語がmatlab

アクション言語がcの場合

A * b

1

行列の乗算

要素単位の乗算。行列の乗算には、MATLAB 関数で演算を使用します。Matlab関数を使用した行列の算術演算を参照してください。

A .* b

1

要素単位の乗算

サポ,トなし。演算A * bを使用します。

A / b

1

行列の右除算

要素単位の右除算。行列の右除算には、MATLAB 関数で/演算を使用します。Matlab関数を使用した行列の算術演算を参照してください。

A ./ b

1

要素単位の右除算

サポ,トなし。演算A / bを使用します。

A \ b

1

行列の左除算

サポ,トなし。MATLAB関数で演算を使用します。Matlab関数を使用した行列の算術演算を参照してください。

A .\ b

1

要素単位の左除算

サポ,トなし。MATLAB関数で。\演算を使用します。Matlab関数を使用した行列の算術演算を参照してください。

A + b

2

加算

加算

A - b

2

減算

減算

A == b

3.

比較,等しい

比較,等しい

A ~= b

3.

比較,等しくない

比較,等しくない

A != b

3.

サポ,トなし。演算A ~= bを使用します。

比較,等しくない

A <> b

3.

サポ,トなし。演算A ~= bを使用します。

比較,等しくない

単項演算と単項アクション

次の表は,ベクトルと行列のオペランドに対するすべての単項演算および単項アクションの解釈をまとめています。単項演算は,

  • 二項演算子より優先順位が高くなります。

  • 右結合であるため,どの式でも,右から左の順序で評価されます。

  • 要素単位の演算を行います。

アクション言語がmatlab

アクション言語がcの場合

~一个

論理不是。ビット単位不是の場合は,是関数bitcmpを使用します。

  • ビット単位not(既定)。この演算を有効にするには,[c言語のビット演算が可能]チャ,トプロパティを選択します。

  • 論理不是。この演算を有効にするには,[c言語のビット演算が可能]チャ,トプロパティをオフにします。

詳細にいては,ビット演算C言語のビット演算が可能を参照してください。

!

サポ,トなし。演算~一个を使用します。

論理不

——一个

負数

負数

+ +

サポ,トなし

ベクトルまたは行列のすべての要素を@ @ンクリメントします。A = A +1と等価です。

一个,

サポ,トなし

ベクトルまたは行列のすべての要素をデクリメントします。A = A -1と等価です。

代入演算

次の表は,ベクトルと行列のオペランドに対する代入演算の解釈をまとめています。

演算

アクション言語がmatlab

アクション言語がcの場合

A = b

シンプルな代入

シンプルな代入

A += b

サポ,トなし。式A = A +bを使用します。

A = A +bと等価です。

A -= b

サポ,トなし。式A = A -bを使用します。

A = A -bと等価です。

A *= b

サポ,トなし。式A = A *bを使用します。

A = A *bと等価です。

A /= b

サポ,トなし。式A = A /bを使用します。

A = A /bと等価です。

行列の個々の要素への値の代入

チャートのアクション言語に適したインデックス付け構文を使用することにより,ベクトルまたは行列の個々のエントリに値を代入できます。

アクション言語が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 結果
スカラ スカラ スカラ,拡張は行われません。
スカラ ベクトルまたは行列 チャトはサズ不一致エラを生成します。
ベクトルまたは行列 スカラ

チャ,トはスカラ,拡張を使用してf (u)のスカラ,の出力値をyのすべての要素に代入します。

Y [i][j] = f(u)

ベクトルまたは行列 ベクトルまたは行列

チャ,トはスカラ,拡張を使用してuの各要素の出力値を計算し,yの対応する要素に代入します。

Y [i][j] = f(u[i][j])
yuのサ@ @ズが異なる場合,チャ@ @トはサ@ @ズ不一致エラ@ @を生成します。

複数の出力をもつ関数の場合,同じ規則が適用されますが,出力と入力がすべてベクトルまたは行列である場合は例外となります。その場合、チャ、トはサ、ズ不一致エラ、を生成し、スカラ、拡張は行われません。

Matlabをアクション言語として使用するチャ,トでは,スカラ,拡張はサポ,トされません。

MATLAB関数を使用した行列の算術演算

Cをアクション言語として使用するチャ,トでは,演算および/は要素単位の乗算と除算を実行します。Cチャトで標準的な行列の乗算や除算を実行する場合はmatlab関数を使用します。

正方行列u1u2に対して以下の演算を実行するとします。

  • 標準的な行列積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をアクション言語として使用するチャ,トでは,演算/,およびは,標準的な行列の乗除算を実行します。これらの演算はステ,トと遷移アクションで直接使用できます。

関連するトピック