Лучшие практики преобразования с одинарной точностью

Используйте Целые числа для индексных переменных

В MATLAB® код, который вы хотите преобразовать в одинарную точность, это - лучшая практика, чтобы использовать целые числа для индексных переменных. Однако, если код не использует целые числа для индексных переменных, если это возможно, convertToSingle попытки обнаружить индексные переменные и выбрать int32 типы для них.

Ограничьте использование assert Операторы

  • Не использовать assert операторы, чтобы задать свойства входных параметров.

  • Не использовать assert операторы, чтобы протестировать тип переменной. Например, не использовать

    assert(isa(a, 'double'))

Инициализируйте свойства класса MATLAB в конструкторе

Не инициализируйте свойства класса MATLAB в properties блок. Вместо этого используйте конструктора, чтобы инициализировать свойства класса.

Обеспечьте тестовый файл, который вызывает вашу функцию MATLAB

Разделите свой основной алгоритм от другого кода, который вы используете, чтобы протестировать и проверить результаты. Создайте тестовый файл, который вызывает ваш алгоритм 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;