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

В этом примере показано, как сгенерировать MATLAB с одной точностью® код из кода MATLAB с двойной точностью.

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

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

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

  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, используйте convertToSingle

convertToSingle -config scfg ex_2ndOrder_filter

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

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

Чтобы просмотреть типы, выбранные для переменных в процессе преобразования, откройте отчет предложения типа для 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.

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

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

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

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

См. также

| |

Похожие темы