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

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

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

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

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

  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

Настройка объекта строения с одной точностью

Создайте объект строения с одной точностью. Укажите имя тестового файла. Проверьте код с одной точностью с помощью тестового файла. Постройте график ошибки между кодом двойной точности и кодом одинарной точности. Используйте значения по умолчанию для других свойств.

scfg = coder.config('single');
scfg.TestBenchName = 'ex_2ndOrder_filter_test';
scfg.TestNumerics = true;
scfg.LogIOForComparisonPlotting = true;

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

Чтобы преобразовать функцию MATLAB с двойной точностью, ex_2ndOrder_filter, для одноточного кода MATLAB, используйте codegen функция со -double2single опция.

codegen -double2single scfg ex_2ndOrder_filter

codegen анализирует код двойной точности. Процесс преобразования выводит типы путем запуска тестового файла, потому что вы не указали входные типы для ex_2ndOrder_filter функция. Процесс преобразования выбирает типы с одной точностью для переменных с двойной точностью. Он выбирает int32 для индексных переменных. Когда преобразование завершено, codegen генерирует отчет по предложению типа.

Просмотр отчета о предложении типа

Чтобы просмотреть типы, выбранные для переменных в процессе преобразования, откройте отчет предложения типа для ex_2ndOrder_filter функция. Щелкните ссылку ex_2ndOrder_filter_report.html.

Отчет откроется в веб-браузере. Процесс преобразования преобразован:

  • Переменные двойной точности в single.

  • Область индекса i на int32. Процесс преобразования приводит переменные индекса и размерности к int32.

Просмотрите сгенерированный код MATLAB с одной точностью

Чтобы просмотреть отчет о генерации кода MATLAB с одной точностью, в Командном окне:

  1. Прокрутка до Generate Single-Precision Code шаг. Щелкните ссылку View report.

  2. На панели MATLAB Source нажмите ex_2ndOrder_filter_single.

В отчете о генерации кода отображается код MATLAB с одной точностью для ex_2ndOrder_filter.

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

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

Сравнение переменных двойной точности и одинарной точности

Можно увидеть графики сравнения для входа x и выход y поскольку вы выбрали для регистрации входных и выходных параметров для графиков сравнения.

Опционально сгенерируйте одноточные Коды С

Если вы также хотите сгенерировать Код С с одной точностью, создайте объект строения кода для генерации кода С. Используйте этот объект строения с -config опция codegen функция. Для примера:

  1. Создайте объект строения кода для генерации статической библиотеки на C.

    cfg = coder.config('lib');
    

  2. Сгенерируйте код С Включите генерацию отчета генерации кода.

    codegen -double2single scfg -config cfg ex_2ndOrder_filter -report
  3. Чтобы просмотреть отчет генерации кода для генерации кода C, щелкните ссылку View Report.

    На панели Generated Code нажмите ex_2ndOrder_filter.c.

    • Переменные двойной точности имеют тип float в коде С

    • Область индекса i - целое число.

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

    Перейдите на вкладку Code Insights. Затем разверните Potential data type issues. Отсутствие операций двойной точности указывает, что никаких операций двойной точности не остается.

См. также

| |

Похожие примеры

Подробнее о