整数と倍精度数の組み合わせ
MATLAB® では同じクラスの整数とスカラー倍精度数の組み合わせがサポートされています。MATLAB では整数と単精度数の組み合わせはサポートされていません。-singleC オプションと共に codegen 関数を使用して単精度の C/C++ コードを生成する場合、MATLAB コードで整数と倍精度数を組み合わせることはできません。整数と double を組み合わせる式を変換すると、無効な MATLAB 式になります。この制限を回避するには、数値の型が一致するように数値をキャストします。整数を倍精度にキャストするか、倍精度数を整数クラスにキャストします。
たとえば、a と b の合計を返す関数 dut について考えます。
function c = dut(a,b) c = a + b; end
codegen を -singleC オプションと共に使用して単精度のコードを生成します。最初の引数を double、2 番目の引数を int32 に指定します。
codegen -singleC -config:lib dut -args {0, int32(2)} -report
コード生成に失敗します。メッセージは、オペランドをキャストしてどちらも同じ型にすることを提案しています。
a を b の型にキャストするようにコードを書き直します。
function c = dut(a,b) c = int32(a) + b; end