В этом примере показано, как сконфигурировать MATLAB® Coder™ приложение, чтобы использовать пользовательскую функцию построения графика для сравнения поведения сгенерированного кода с фиксированной точкой с поведением исходного кода MATLAB с плавающей точкой.
По умолчанию, когда опция Log inputs and outputs for comparison plots включена, процесс преобразования использует функцию построения графика на основе временных рядов, чтобы показать результаты с плавающей и фиксированной точками и различие между ними. Однако во время преобразования с фиксированной точкой может потребоваться визуализировать числовые различия в представлении, которое более подходит для области приложения. В этом примере показано, как настроить графическое изображение и создать графики поля точек на шаге тестовых чисел преобразования с фиксированной точкой.
Этот пример требует следующих продуктов:
MATLAB
Fixed-Point Designer™
MATLAB CODER
Компилятор 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 | Данные для фильтрации. |
Перейдите к папке, которая содержит файлы для этого примера.
На вкладке Apps MATLAB Toolstrip, в разделе Code Generation, щелкните значок приложения.
Чтобы добавить функцию точки входа myFilter
в проект перейдите к файлу myFilter.m
, а затем нажмите Open.
По умолчанию приложение сохраняет информацию и настройки для этого проекта в текущей папке в файле с именем myFilter.prj
.
Установите Numeric Conversion значение Convert to fixed point
.
Щелкните Next, чтобы перейти к Define Input Types шагу.
Окно приложения myFilter.m
по вопросам нарушений кода и готовности генерации кода. Приложение не находит проблемы в myFilter.m
.
На странице Define Input Types, чтобы добавить myFilterTest
в качестве тестового файла просмотрите myFilterTest.m
, а затем нажмите Open.
Нажмите Autodefine Input Types.
Приложение определяет из тестового файла, что входной тип in
является complex(double(1x1))
.
Щелкните Next, чтобы перейти к Check for Run-Time Issues шагу.
На Check for Run-Time Issues шаге генерируется MEX с инструментами. myFilter
. Он запускает тестовый файл myFilterTest
замена вызовов на myFilter
с вызовами сгенерированного MEX. Если приложение находит проблемы, оно выдает предупреждения и сообщения об ошибке. Можно кликнуть сообщение, чтобы выделить проблемный код в окне, где можно отредактировать код.
Перейдите к тестовому файлу myFiltertest.m
.
Нажмите Check for Issues.
Приложение не обнаруживает проблем.
Щелкните Next, чтобы перейти к Convert to Fixed Point шагу.
Приложение отображает скомпилированную информацию о переменных в вашем коде. Для получения дополнительной информации см. Просмотр и изменение информации о переменныхПросмотр и изменение информации о переменных (Fixed-Point Designer).
Чтобы открыть диалоговое окно настроек, щелкните стрелу Settings.
Проверьте, что для Default word length задано значение 16
.
В разделе Advanced установите Signedness равным Signed
В разделе Plotting and Reporting установите Custom plot function равным plotDiff
.
Щелкните стрелку Analyze. Проверьте, что тестовый файл myFilterTest
.
Нажмите Analyze.
Тестовый файл, myFilterTest
, запускается, и приложение отображает минимальные и максимальные области значений симуляции на вкладке Variables. Используя данные области значений симуляции, программное обеспечение предлагает фиксированные точки для каждой переменной на основе настроек предложения по типу по умолчанию и отображает их в столбце Proposed Type.
Чтобы преобразовать алгоритм с плавающей точкой в фиксированную точку, нажмите Convert.
Программа проверяет предлагаемые типы и генерирует версию функции точки входа с фиксированной точкой.
Щелкните Test стреле, выберите Log inputs and outputs for comparison plots и нажмите Test.
Приложение запускает тестовый файл, который вы использовали, чтобы задать входные типы для тестирования кода MATLAB с фиксированной точкой. Поскольку вы выбрали для регистрации входных и выходных параметров для графиков сравнения и использования пользовательской функции построения графика, plotDiff.m
для этих графиков приложение использует эту функцию, чтобы сгенерировать график сравнения. График показывает, что результаты с фиксированной точкой не соответствуют результатам с плавающей точкой.
В настройках увеличьте DefaultWordLength до 24
и снова преобразуйте в фиксированную точку.
Приложение преобразует myFilter.m
к фиксированной точке и предлагает типы данных с фиксированной точкой, используя новый размер слова по умолчанию.
Еще раз запустите шаг тестовых цифр.
Увеличенный размер слова улучшает результаты. На этот раз график показывает, что результаты с фиксированной точкой совпадают с результатами с плавающей точкой.