Stateflow での複素数データの演算
Simulink® モデルの Stateflow® チャートには、複素数データでの計算に使用する構文を定義するアクション言語プロパティがあります。アクション言語プロパティは次のとおりです。
アクション言語は MATLAB®。
アクション言語は C。
詳細については、アクション言語構文としての MATLAB と C の相違点を参照してください。
複素数データの表記法
MATLAB をアクション言語として使用するチャートでは、複素数表記法 a + bi (a と b は実数) を使用して複素数データを定義できます。たとえば、次のステートメントは 3+4i の値を x に代入します。
x = 3 + 4i;
あるいは、complex 演算子を使用して複素数データを定義することもできます。
complex(<real_part>,<imag_part>)
<real_part> と <imag_part> はそれぞれ、複素数の実数部と虚数部を定義する引数です。これら 2 つの引数は、実数値、または実数値になる式でなければなりません。前述の例と同様に、次のステートメントは 3+4i の値を x に代入します。
x = complex(3,4);
C をアクション言語として使用するチャートは、複素数表記法 a + bi をサポートしていません。2 つの実数値に基づいて複素数を定義するには、complex 演算子を使用します。
二項演算
次の表は、複素数オペランドに対するすべての二項演算の解釈を優先順位 (1 = 最高、3 = 最低) に従ってまとめています。二項演算は左結合であるため、どの式でも、優先度が同じ演算子は左から右の順序で評価されます。
演算 | 優先順位 | アクション言語が MATLAB | アクション言語が C の場合 |
|---|---|---|---|
| 1 | 乗算。 | 乗算。 |
| 1 | 除算。 | サポートなし。MATLAB 関数で |
| 2 | 加算。 | 加算。 |
| 2 | 減算。 | 減算。 |
| 3 | 比較、等しい。 | 比較、等しい。 |
| 3 | 比較、等しくない。 | 比較、等しくない。 |
| 3 | サポートなし。演算 | 比較、等しくない。 |
| 3 | サポートなし。演算 | 比較、等しくない。 |
単項演算と単項アクション
次の表は、複素数データに対するすべての単項演算および単項アクションの解釈をまとめています。単項演算は、
二項演算子より優先順位が高くなります。
右結合であるため、どの式でも、右から左の順序で評価されます。
演算 | アクション言語が MATLAB | アクション言語が C の場合 |
|---|---|---|
| 負数。 | 負数。 |
| サポートなし。式 | インクリメント。 |
| サポートなし。式 | デクリメント。 |
代入演算
次の表は、Stateflow チャート内の代入演算の解釈をまとめています。
演算 | アクション言語が MATLAB | アクション言語が C の場合 |
|---|---|---|
| シンプルな代入 | シンプルな代入 |
| サポートなし。式 |
|
| サポートなし。式 |
|
| サポートなし。式 |
|
複素数の実数部分と虚数部分へのアクセス
複素数の実数部と虚数部にアクセスするには、real 演算子と imag 演算子を使用します。
real 演算子
real 演算子は、複素数の実数部の値を返します。
real(<complex_expr>)
<complex_expr> は、複素数になる式です。たとえば、frame(200) が複素数 8.23 + 4.56i になる場合、この式は 8.2300 の値を返します。
real(frame(200))
imag 演算子
imag 演算子は、複素数の虚数部の値を返します。
imag(<complex_expr>)
<complex_expr> は、複素数になる式です。たとえば、frame(200) が複素数 8.23 + 4.56i になる場合、この式は 4.5600 の値を返します。
imag(frame(200))