В этом примере показано, как настроить приложение MATLAB ® Coder™ на использование пользовательской функции печати для сравнения поведения созданного кода с фиксированной запятой с поведением исходного кода MATLAB с плавающей запятой.
По умолчанию, когда включена опция Входы и выходы журнала (Log inputs and outputs for comparison plots), процесс преобразования использует функцию печати на основе временных рядов, чтобы показать результаты с плавающей и фиксированной точками и разницу между ними. Однако при преобразовании с фиксированной точкой может потребоваться визуализация числовых различий в представлении, которое более подходит для области приложения. В этом примере показано, как настроить печать и создать графики рассеяния на этапе проверки числовых значений преобразования с фиксированной точкой.
В этом примере требуются следующие продукты:
MATLAB
Designer™ с фиксированной точкой
Кодер MATLAB
Компилятор C
См. раздел Поддерживаемые компиляторы.
Вы можете использовать mex -setup для изменения компилятора по умолчанию. См. раздел Изменение компилятора по умолчанию.
Создайте локальную рабочую папку, например: c:\custom_plot.
Изменение на docroot\toolbox\fixpoint\examples папка. В командной строке MATLAB введите:
cd(fullfile(docroot, 'toolbox', 'fixpoint', 'examples'))
Копировать myFilter.m, myFilterTest.m, plotDiff.m, и filterData.mat в локальную рабочую папку.
| Напечатать | Имя | Описание |
|---|---|---|
| Код функции | myFilter.m | Начальная функция MATLAB |
| Тестовый файл | myFilterTest.m | Сценарий MATLAB, который тестирует myFilter.m |
| Функция печати | plotDiff.m | Пользовательская функция печати |
| MAT-файл | filterData.mat | Данные для фильтрации. |
Перейдите к папке, содержащей файлы для этого примера.
На вкладке Приложения MATLAB Toolstrip в разделе Создание кода щелкните значок приложения.
Добавление функции точки входа myFilter в проект, перейдите к файлу myFilter.mи нажмите кнопку Открыть.
По умолчанию приложение сохраняет информацию и параметры этого проекта в текущей папке в файле с именем myFilter.prj.
Задать числовое преобразование в Convert to fixed point.

Нажмите кнопку Далее (Next), чтобы перейти к шагу Определить типы ввода (Define Input Types).
Экраны приложений myFilter.m для нарушений кода и проблем готовности к созданию кода. Приложение не находит проблем в myFilter.m.
На странице Определить типы ввода (Define Input Types), чтобы добавить myFilterTest в качестве тестового файла перейдите к myFilterTest.mи нажмите кнопку Открыть.
Щелкните Автоопределить типы ввода (Autodefine Input Types).
Приложение определяет из тестового файла тип ввода in является complex(double(1x1)).

Нажмите кнопку Далее, чтобы перейти к шагу Проверка ошибок времени выполнения.
На шаге Проверка ошибок времени выполнения создается инструментальный MEX. myFilter. Он запускает тестовый файл myFilterTest замена вызовов myFilter с вызовами сгенерированного MEX. Если приложение находит проблемы, оно выдает предупреждения и сообщения об ошибках. Можно щелкнуть сообщение, чтобы выделить проблемный код в окне, в котором можно изменить код.
Перейдите к тестовому файлу myFiltertest.m.
Щелкните Проверить наличие проблем.
Приложение не обнаруживает проблем.
Нажмите кнопку Далее (Next), чтобы перейти к шагу Преобразовать в фиксированную точку (Convert to Fixed Point).
Приложение отображает скомпилированную информацию для переменных в вашем коде. Дополнительные сведения см. в разделе Просмотр и изменение информации о переменныхПросмотр и изменение информации о переменных (Конструктор фиксированных точек).

Чтобы открыть диалоговое окно параметров, щелкните стрелку «Параметры».
Убедитесь, что для параметра Длина слова по умолчанию задано значение 16.
В разделе «Дополнительно» установите для параметра «Подпись» значение Signed
В разделе «Печать и отчеты» задайте для параметра «Пользовательская функция печати» значение plotDiff.
Щелкните стрелку Анализ (Analyze).
Убедитесь, что тестовый файл myFilterTest.
Щелкните Анализ (Analyze).
тестовый файл, myFilterTest, запускает, и приложение отображает минимальный и максимальный диапазоны моделирования на вкладке Переменные. Используя данные диапазона моделирования, программа предлагает типы фиксированных точек для каждой переменной на основе настроек предложения типа по умолчанию и отображает их в столбце Предлагаемый тип.

Чтобы преобразовать алгоритм с плавающей запятой в фиксированную, нажмите кнопку «Преобразовать».
Программное обеспечение проверяет правильность предлагаемых типов и генерирует фиксированную версию функции начального уровня.

Щелкните стрелку Тест (Test),
выберите Вход и вывод журнала (Log inputs and outputs for comparison plots), а затем щелкните Тест (test
Приложение запускает тестовый файл, который использовался для определения типов ввода для тестирования кода MATLAB с фиксированной точкой. Поскольку было выбрано регистрировать входные и выходные данные для сравнительных графиков и использовать пользовательскую функцию печати, plotDiff.mДля этих графиков приложение использует эту функцию для генерации графика сравнения. График показывает, что результаты с фиксированной точкой не совпадают с результатами с плавающей точкой.

В параметрах увеличьте значение DefureWordLength до 24 а затем снова преобразовать в фиксированную точку.
Приложение преобразует myFilter.m для фиксированной точки и предлагает типы данных с фиксированной точкой с использованием новой длины слова по умолчанию.
Снова запустите шаг с номерами тестов.
Увеличенная длина слова улучшает результаты. На этот раз график показывает, что результаты с фиксированной точкой соответствуют результатам с плавающей точкой.
