В коде MATLAB®, который вы хотите преобразовать в одинарную точность, это - лучшая практика использовать целые числа для индексных переменных. Однако, если код не использует целые числа для индексных переменных, когда возможный convertToSingle
пытается обнаружить индексные переменные и выбрать типы int32
для них.
assert
Не используйте операторы assert
, чтобы задать свойства входных параметров.
Не используйте операторы assert
, чтобы протестировать тип переменной. Например, не использовать
assert(isa(a, 'double'))
Не инициализируйте свойства класса MATLAB в блоке properties
. Вместо этого используйте конструктора, чтобы инициализировать свойства класса.
Разделите свой основной алгоритм от другого кода, который вы используете, чтобы протестировать и проверить результаты. Создайте тестовый файл, который вызывает ваш алгоритм MATLAB с двойной точностью. Можно использовать тестовый файл для:
Автоматически задайте свойства входных параметров функции верхнего уровня.
Проверьте, что алгоритм с двойной точностью ведет себя, как вы ожидаете. Поведение с двойной точностью является базовой линией, с которой вы сравниваете поведение версий с одинарной точностью вашего алгоритма.
Сравните поведение версии с одинарной точностью вашего алгоритма к базовой линии с двойной точностью.
Для лучших результатов тестовый файл должен осуществить алгоритм в своем полном рабочем диапазоне.
Код MATLAB, который вы хотите преобразовать в одинарную точность, должен выполнить требования генерации кода. Смотрите Функции языка MATLAB, Поддерживавшие для Генерации кода C/C++.
Чтобы помочь вам идентифицировать неподдерживаемые функции или построения в вашем коде MATLAB, добавьте прагму %#codegen
в верхнюю часть вашего файла MATLAB. Когда вы редактируете свой код в редакторе MATLAB, функциях флагов Анализатора кода MATLAB и построениях, которые не поддержаны для генерации кода. Смотрите, что Контрольный код Использует Анализатор кода MATLAB. Когда вы используете приложение MATLAB Coder™, экраны приложения ваш код для готовности генерации кода. В функциональной строке можно использовать Инструмент Готовности Генерации кода. Смотрите, что Контрольный код Использует Инструмент Готовности Генерации кода.
-args
, чтобы задать входные свойстваКогда вы генерируете код MATLAB с одинарной точностью, если вы задаете тестовый файл, вы не должны задавать свойства аргумента с опцией -args
. В этом случае генератор кода запускает тестовый файл, чтобы определить свойства входных типов. Однако выполнение тестового файла может замедлить генерацию кода. Это - лучшая практика передать свойства опции -args
так, чтобы convertToSingle
не запускал тестовый файл, чтобы определить свойства аргумента. Если у вас есть лицензия MATLAB Coder, можно использовать coder.getArgTypes
, чтобы определить свойства аргумента. Например:
types = coder.getArgTypes('myfun_test', 'myfun'); scfg = coder.config('single'); convertToSingle -config scfg -args types myfun
Когда вы будете использовать функцию convertToSingle, чтобы сгенерировать код MATLAB с одинарной точностью, включите тестирование численных данных и регистрацию данных ввода-вывода для графиков сравнения. Чтобы использовать тестирование численных данных, необходимо обеспечить тестовый файл, который вызывает функцию MATLAB. Чтобы включить тестирование численных данных и регистрацию данных ввода-вывода, создайте объект coder.SingleConfig
. Установите TestBenchName
, TestNumerics
и свойства LogIOForComparisonPlotting
. Например:
scfg = coder.config('single'); scfg.TestBenchName = 'mytest'; scfg.TestNumerics = true; scfg.LogIOForComparisonPlotting = true;