C チャートで複素数データを使用する場合のベスト プラクティス
複素数データとは、その値が複素数に該当するデータです。たとえば、Simulink® モデルの Stateflow® チャートでは、3 + 5i
という値の入力信号は複素数です。Stateflow チャートの複素数データを参照してください。
C をアクション言語として使用する Stateflow チャートで複素数データを使用するには、以下のベスト プラクティスに従います。
MATLAB 関数による数学関数演算の実行
sin
、cos
、min
、max
、abs
などの数学関数は、C チャートの複素数データでは機能しません。ただし、MATLAB® 関数を使用して、複素数データの数学関数演算を実行できます。
簡単な例
以下のチャートでは、MATLAB 関数が複素数の絶対値を計算します。
comp_num
の値は 1+2i
です。絶対値を計算すると 2.2361
の答えがわかります。
絶対値の計算法
複素数の絶対値を検出すると仮定します。以下の手順に従います。
このシグネチャを使って、以下の MATLAB 関数をチャートに追加します。
y = myabs(u)
関数ボックスをダブルクリックし、エディターを開きます。
エディターで、以下のコードを入力します。
function y = myabs(u) %#codegen y = abs(u);
関数
myabs
は、複素数入力u
を取得して、絶対値を出力y
として返します。複素数値を受け入れるように入力引数
u
を設定します。モデル エクスプローラーを開きます。
モデル エクスプローラーの [モデルの階層構造] ペインで、MATLAB 関数
myabs
に移動します。モデル エクスプローラーの [コンテンツ] ペインで、入力引数
u
を右クリックし、コンテキスト メニューから [プロパティ] を選択します。[データ] プロパティ ダイアログ ボックスの [実数/複素数] フィールドで
[On]
を選択し、[OK] をクリックします。
複素数型の関数入力に実数値を渡すことはできません。詳細は、C チャートで複素数データを使用する場合のルールを参照してください。
MATLAB 関数による複素数の除算の実行
複素数オペランドによる除算は、C チャートでは二項演算または代入演算としては使用できません。ただし、MATLAB 関数を使用して、複素数データの除算を実行できます。
簡単な例
以下のチャートでは、MATLAB 関数は 2 つの複素数オペランドの除算を実行します。
comp_num
と comp_den
の値は、1+2i
および 3+4i
となります。これらの値を除算すると、0.44+0.08i
の答えがわかります。
複素数の除算の実行方法
以下のように 2 つの複素数を除算します。
この関数シグネチャを使って、以下の MATLAB 関数をチャートに追加します。
y = mydiv(u1, u2)
関数ボックスをダブルクリックし、エディターを開きます。
エディターで、以下のコードを入力します。
function y = mydiv(u1, u2) %#codegen y = u1 / u2;
関数
mydiv
は 2 つの複素数入力u1
とu2
を取得して、この 2 つの複素数の商を出力y
として返します。複素数値を受け入れるように入力引数と出力引数を設定します。
モデル エクスプローラーを開きます。
モデル エクスプローラーの [モデルの階層構造] ペインで、MATLAB 関数
mydiv
に移動します。入力引数と出力引数ごとに、以下の手順に従います。
モデル エクスプローラーの [コンテンツ] ペインで、引数を右クリックし、コンテキスト メニューから [プロパティ] を選択します。
[データ] プロパティ ダイアログ ボックスの [実数/複素数] フィールドで
[On]
を選択し、[OK] をクリックします。
複素数型の関数入力に実数値を渡すことはできません。詳細は、C チャートで複素数データを使用する場合のルールを参照してください。
C チャートで複素数データを使用する場合のルール
複素数データとは、その値が複素数に該当するデータです。たとえば、Simulink モデルの Stateflow チャートでは、3 + 5i
という値の入力信号は複素数です。Stateflow チャートの複素数データを参照してください。
C をアクション言語として使用する Stateflow チャートで複素数データを使用する場合は、以下のルールが適用されます。
複素数オペランドと実数オペランドの混在は加算、減算、および乗算のみに限定する