Main Content

Stateflow での複素数データの演算

Simulink® モデルの Stateflow® チャートには、複素数データでの計算に使用する構文を定義するアクション言語プロパティがあります。アクション言語プロパティは次のとおりです。

  • アクション言語は MATLAB®

  • アクション言語は C。

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

複素数データの表記法

MATLAB をアクション言語として使用するチャートでは、複素数表記法 a + bi (ab は実数) を使用して複素数データを定義できます。たとえば、次のステートメントは 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 の場合

a * b

1

乗算。

乗算。

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 の場合

-a

負数。

負数。

a++

サポートなし。式 a = a+1 を使用します。

インクリメント。a = a+1 と等価です。

a--

サポートなし。式 a = a-1 を使用します。

デクリメント。a = a-1 と等価です。

代入演算

次の表は、Stateflow チャート内の代入演算の解釈をまとめています。

演算

アクション言語が 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 と等価です。

複素数の実数部分と虚数部分へのアクセス

複素数の実数部と虚数部にアクセスするには、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))

参考

| | |

関連するトピック