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

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

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

Предельное Использование assert Операторы

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

  • Не используйте assert операторы для тестирования типа переменной. Для примера не используйте

    assert(isa(a, 'double'))

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

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

Предоставьте тестовый файл, который вызывает вашу функцию MATLAB

Отделите свой основной алгоритм от другого кода, который вы используете для тестирования и проверки результатов. Создайте тестовый файл, который вызывает ваш алгоритм MATLAB с двойной точностью. Можно использовать тестовый файл для:

  • Автоматически задайте свойства входных параметров функции верхнего уровня.

  • Проверьте, что алгоритм двойной точности ведет себя, как вы ожидаете. Поведение с двойной точностью является базовой линией, с которой вы сравниваете поведение версий алгоритма с одной точностью.

  • Сравните поведение версии алгоритма с одной точностью с базовой линией с двойной точностью.

Для достижения наилучших результатов в тестовом файле должен быть реализован алгоритм в полной рабочей области значений.

Подготовьте свой код для генерации кода

Код MATLAB, который вы хотите преобразовать в одинарную точность, должен соответствовать требованиям генерации кода. Смотрите функции языка MATLAB, поддерживаемые для генерации кода C/C + +.

Чтобы помочь вам идентифицировать неподдерживаемые функции или конструкции в коде MATLAB, добавьте %#codegen прагма в верхнюю часть файла MATLAB. При редактировании кода в редакторе MATLAB КОД MATLAB Analyzer помечает функции и конструкции, которые не поддерживаются для генерации кода. См. раздел «Проверка кода с использованием анализатора кода MATLAB». Когда вы используете приложение MATLAB Coder™, приложение просматривает ваш код на предмет готовности генерации кода. В функциональной линии можно использовать Генерацию кода Инструмента Readiness. См. Раздел «Проверка кода с использованием инструмента подготовки генерации кода».

Используйте -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;