Сгенерируйте код С с одинарной точностью Используя приложение MATLAB Coder

В этом примере показано, как сгенерировать код С с одинарной точностью из кода MATLAB® с двойной точностью при помощи приложения MATLAB Coder™.

Необходимые условия

Чтобы завершить этот пример, установите следующие продукты:

Создайте папку и скопируйте соответствующие файлы

  1. Создайте локальную рабочую папку, например, c:\ex_2ndOrder_filter.

  2. Превратитесь в docroot\toolbox\fixpoint\examples папка. В командной строке MATLAB, введите:

    cd(fullfile(docroot, 'toolbox', 'fixpoint', 'examples')) 

  3. Скопируйте ex_2ndOrder_filter.m и ex_2ndOrder_filter_test.m файлы к вашей локальной рабочей папке.

    ВводИмяОписание
    Код функцииex_2ndOrder_filter.mФункция MATLAB точки входа
    Тестовый файлex_2ndOrder_filter_test.m

    Скрипт MATLAB, который тестирует ex_2ndOrder_filter.m

     Функция ex_2ndOrder_filter

     ex_2ndOrder_filter_test Скрипт

Откройте приложение MATLAB Coder

  1. Перейдите к папке работы, которая содержит файл для этого примера.

  2. На вкладке MATLAB Toolstrip Apps, под Code Generation, кликают по значку приложения.

Выберите исходные файлы

Добавить функцию точки входа ex_2ndOrder_filter к проекту просмотрите к файлу ex_2ndOrder_filter.m, и затем нажмите Open. По умолчанию приложение сохраняет информацию и настройки для этого проекта в текущей папке в файле с именем ex_2ndOrder_filter.prj.

Включите преобразование с одинарной точностью

  1. Установите Numeric Conversion на Convert to single precision.

  2. Нажмите Next, чтобы перейти к шагу Define Input Types.

    Экраны приложения ex_2ndOrder_filter.m для нарушений регулярной кодовой последовательности и проблем готовности генерации кода. Приложение не находит проблемы в ex_2ndOrder_filter.m.

Определите входные типы

  1. На странице Define Input Types, чтобы добавить ex_2ndOrder_filter_test как тестовый файл, просмотрите к ex_2ndOrder_filter_test. Нажмите Open.

  2. Нажмите Autodefine Input Types.

    Тестовый файл запускает и отображает выводы фильтра для каждого из входных сигналов. Приложение решает что входной тип x double(1x256).

  3. Нажмите Next, чтобы перейти к шагу Check for Run-Time Issues.

Проверяйте на проблемы во время выполнения

Чтобы обнаружить и устранить проблемы преобразования с одинарной точностью, выполните шаг Check for Run-Time Issues.

  1. На странице Check for Run-Time Issues приложение заполняет поле тестового файла с ex_2ndOrder_filter_test, тестовый файл, что вы раньше задавали входные типы.

  2. Нажмите Check for Issues.

    Приложение генерирует MEX-функцию с одинарной точностью от ex_2ndOrder_filter. Это запускает тестовый файл ex_2ndOrder_filter_test заменяя вызовы ex_2ndOrder_filter с вызовами сгенерированной MEX-функции. Если приложение находит проблемы, оно предоставляет предупреждающие сообщения и сообщения об ошибке. Кликните по сообщению, чтобы подсветить проблематичный код в окне, где можно отредактировать код. В этом примере приложение не обнаруживает проблемы.

  3. Нажмите Next, чтобы перейти к странице Generate Code.

Сгенерируйте код С с одинарной точностью

  1. В the Generate диалоговом окне, набор Build type к Static Library.

  2. Установите Language на C.

  3. Для других настроек используйте значения по умолчанию.

  4. Чтобы сгенерировать код, нажмите Generate.

    MATLAB Coder разрабатывает проект и генерирует статическую библиотеку C и вспомогательные файлы в подпапке по умолчанию, codegen/lib/ex_2ndOrder_filter.

Просмотрите сгенерированный код C

Отображения приложения сгенерированный код для ex_2ndOrder_filter.c.

  • Переменные с двойной точностью имеют, вводят float в коде С.

  • Индекс i целое число.

Просмотрите потенциальные проблемы типа данных

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

Чтобы открыть отчет генерации кода, щелкните по ссылке View Report.

Кликните по вкладке Code Insights. Расширьте Potential data type issues. Отсутствие операций с двойной точностью указывает, что никакие операции с двойной точностью не остаются.

Связанные примеры

Больше о