MATLAB® поддерживает комбинацию целых чисел того же класса и скалярных чисел с двойной точностью. MATLAB не поддерживает комбинацию целых чисел и чисел с одинарной точностью. Если вы используете приложение MATLAB Coder™ или codegen
с опцией -singleC
, чтобы сгенерировать код C/C++ с одинарной точностью, ваш код MATLAB не может объединить целые числа и числа с двойной точностью. Преобразование выражения, которое комбинирует целые числа и удваивает результаты в недопустимом выражении MATLAB. Чтобы работать вокруг этого ограничения, бросьте числа так, чтобы типы чисел соответствовали. Или бросьте целые числа к с двойной точностью или бросьте числа с двойной точностью к целочисленному классу.
Например, рассмотрите функциональный dut
, который возвращает сумму a
и b
.
function c = dut(a,b) c = a + b; end
Сгенерируйте код с одинарной точностью с помощью codegen
с опцией -singleC
. Укажите, что первый аргумент является двойным, и второй аргумент является int32.
codegen -singleC -config:lib dut -args {0, int32(2)} -report
Сбои генерации кода. Сообщение предполагает, что вы бросаете операнды так, чтобы у них были те же типы.
Перепишите код так, чтобы он бросил a
к типу b
.
function c = dut(a,b) c = int32(a) + b; end