Реализуйте свой алгоритм в MATLAB®.
Напишите тестовый файл, который вызывает ваш исходный алгоритм MATLAB, чтобы подтвердить поведение вашего алгоритма.
Создайте тестовый файл, чтобы подтвердить, что алгоритм работает должным образом в плавающей точке, прежде чем преобразовывать его в фиксированную точку. Используйте тот же тестовый файл, чтобы предложить типы данных с фиксированной точкой. После преобразования используйте этот тестовый файл, чтобы сравнить результаты с фиксированной точкой с базовой линией с плавающей точкой.
Подготовим алгоритм для инструментирования.
Написание функции точки входа.
Для инструментирования и генерации кода удобно иметь функцию точки входа, которая вызывает функцию, которая будет преобразована в фиксированную точку. Можно привести входные параметры функции к различным типам данных и добавить вызовы к различным изменениям алгоритма для сравнения. При помощи функции точки входа можно запустить как варианты алгоритма с фиксированной точкой, так и с плавающей точкой. Можно также запустить различные варианты фиксированной точки. Этот подход позволяет вам итерировать на коде быстрее, чтобы прийти к оптимальному проекту с фиксированной точкой.
Создайте MEX с инструментами для исходного алгоритма MATLAB.
Запустите свой исходный алгоритм MATLAB, чтобы логгировать данные min/max. Просмотрите эти данные в инструментирование отчете.
Отделите типы данных от алгоритма.
Преобразуйте функции в таблицы типов и обновляйте функцию точки входа.
Проверьте измененную функцию.
Составьте таблицу фиксированных точек на основе предложенных типов данных.
Создайте MEX-функцию.
Запустите и сравните поведение MEX-функции с базовым уровнем.
Используйте предлагаемые типы данных с фиксированной точкой.
Создайте таблицу фиксированных точек на основе предложенных типов данных, создайте mex, запустите, а затем сравните с базовым уровнем.
При необходимости, если у вас есть лицензия MATLAB Coder™, сгенерируйте код.
Начните с тестирования собственных C-типов.
Итерация, алгоритм настройки.
Для примера настройте алгоритм, чтобы избежать переполнения или исключить смещение.