В этом примере показано, как предложить типы данных с фиксированной точкой на основе данных об области значений симуляции с помощью приложения Fixed-Point Converter.
Этот пример требует следующих продуктов:
MATLAB®
Fixed-Point Designer™
Компилятор C
См. поддерживаемые компиляторы.
Можно использовать mex -setup
изменить компилятор по умолчанию. См. Компилятор Значения по умолчанию Изменения.
Создайте локальную рабочую папку, например, c:\ex_2ndOrder_filter
.
Превратитесь в docroot\toolbox\fixpoint\examples
папка. В командной строке MATLAB, введите:
cd(fullfile(docroot, 'toolbox', 'fixpoint', 'examples'))
Скопируйте 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_test Скрипт
Перейдите к папке работы, которая содержит файл для этого примера.
На вкладке MATLAB Toolstrip Apps, под Code Generation, кликают по значку приложения.
Добавить функцию точки входа ex_2ndOrder_filter
к проекту просмотрите к файлу ex_2ndOrder_filter.m
, и затем нажмите Open. По умолчанию приложение сохраняет информацию и настройки для этого проекта в текущей папке в файле с именем ex_2ndOrder_filter.prj
.
Нажмите Next, чтобы перейти к шагу Define Input Types.
Экраны приложения ex_2ndOrder_filter.m
для нарушений регулярной кодовой последовательности и проблем готовности преобразования фиксированной точки. Приложение не находит проблемы в ex_2ndOrder_filter.m
.
На странице Define Input Types, чтобы добавить ex_2ndOrder_filter_test
как тестовый файл, просмотрите к ex_2ndOrder_filter_test
, и затем нажмите Open.
Нажмите Autodefine Input Types.
Тестовый файл запускает и отображает выводы фильтра для каждого из входных сигналов.
Приложение решает из тестового файла что входной тип x
double(1x256)
.
Нажмите Next, чтобы перейти к шагу Convert to Fixed Point.
Приложение генерирует оснащенную MEX-функцию для вашей функции MATLAB точки входа. Отображения приложения скомпилировали информацию — тип, размер, и сложность — для переменных в вашем коде. Вид на море и Изменяет Переменную информацию.
На вкладке Function Replacements, функции отображений приложения, которые не поддерживаются для преобразования фиксированной точки. Смотрите Выполнение Симуляции.
Кликните по стреле Analyze. Проверьте, что Analyze ranges using simulation выбран и что файлом испытательного стенда является ex_2ndOrder_filter_test
. Можно добавить тестовые файлы и выбор, чтобы запустить больше чем один тестовый файл во время симуляции. Если при запуске несколько тестовых файлов, приложение объединяет результаты симуляции.
Выберите Log data for histogram.
По умолчанию опция Show code coverage выбрана. Эта опция предоставляет информацию о покрытии кода, которая помогает вам проверить, что ваш тестовый файл тестирует ваш алгоритм в намеченном рабочем диапазоне.
Нажмите Analyze.
Симуляция запускается и отображения приложения панель покрытия кода, на которую наносят цветную маркировку, слева от кода MATLAB. Рассмотрите эту информацию, чтобы проверить, что тестовый файл тестирует алгоритм соответственно. Темно-зеленая линия слева от кода указывает, что код запускается каждый раз, когда алгоритм выполняется. Оранжевая панель указывает, что код рядом с нею выполняется только однажды. Это поведение ожидается для этого примера, потому что код инициализирует персистентную переменную. Если ваш тестовый файл не покрывает весь ваш код, обновляет тест или добавляет больше тестовых файлов.
Если значение имеет ...
рядом с ним округлено значение. Сделайте паузу по ...
просмотреть фактическое значение.
Минимум симуляции отображений приложения и максимум располагаются на вкладке Variables. Используя данные об области значений симуляции, программное обеспечение предлагает фиксированные точки для каждой переменной на основе настроек предложения по типу по умолчанию и отображает их в столбце Proposed Type. Приложение включает опцию Convert.
Примечание
Можно вручную ввести статические области значений. Эти вручную вводимые области значений более приоритетны по сравнению с областями значений симуляции. Приложение использует вручную вводимые области значений, чтобы предложить типы данных. Можно также изменить и заблокировать предложенный тип.
Исследуйте предложенные типы и проверьте, что они покрывают полную область значений симуляции. Чтобы просмотреть регистрируемые данные о гистограмме для переменной, кликните по ее полю Proposed Type.
Чтобы изменить предложенные типы данных, или введите необходимый тип в поле Proposed Type или используйте средства управления гистограммой. Для получения дополнительной информации о гистограмме, см. Данные логов для Гистограммы.
Чтобы преобразовать алгоритм с плавающей точкой в фиксированную точку, нажмите Convert.
Во время процесса преобразования фиксированной точки программное обеспечение подтверждает предложенные типы и генерирует следующие файлы в codegen\ex_2ndOrder_filter\fixpt
папка в вашей локальной рабочей папке.
ex_2ndOrder_filter_fixpt.m
— версия фиксированной точки ex_2ndOrder_filter.m
.
ex_2ndOrder_filter_wrapper_fixpt.m
— этот файл преобразует значения данных с плавающей точкой, предоставленные тестовым файлом фиксированным точкам, определенным для входных параметров во время преобразования. Эти значения фиксированной точки поданы в конвертированный проект фиксированной точки, ex_2ndOrder_filter_fixpt.m
.
ex_2ndOrder_filter_fixpt_report.html
— этот отчет показывает сгенерированную фиксированную точку и результаты инструментирования фиксированной точки.
ex_2ndOrder_filter_report.html
— этот отчет показывает исходный алгоритм и результаты инструментирования фиксированной точки.
ex_2ndOrder_filter_fixpt_args.mat
— MAT-файл, содержащий структуру для входных параметров, структуру для выходных аргументов и имени файла фиксированной точки.
Если ошибки или предупреждения происходят во время валидации, вы видите их на вкладке Output. Смотрите Типы Проверки.
В списке Output Files выберите ex_2ndOrder_filter_fixpt.m
. Отображения приложения сгенерированная фиксированная точка.
Кликните по стреле Test. Выберите Log inputs and outputs for comparison plots, и затем нажмите Test.
Протестировать фиксированную точку код MATLAB, выполнение приложения тестовый файл, который вы использовали для входных define типов. Опционально, можно добавить тестовые файлы и выбор, чтобы запустить больше чем один тестовый файл, чтобы протестировать численные данные. Программное обеспечение запускает и с плавающей точкой и симуляцию фиксированной точки и затем вычисляет ошибки для выходной переменной y
. Поскольку вы выбрали, чтобы регистрировать вводы и выводы для графиков сравнения, приложение генерирует график для каждого ввода и вывода. Приложение прикрепляет эти графики в окне одной фигуры.
Приложение также сообщает ошибочную информацию о вкладке Verification Output. Максимальная погрешность меньше 0,03%. В данном примере этот предел погрешности приемлем.
Если различие не приемлемо, измените типы данных с фиксированной точкой или ваш исходный алгоритм. Для получения дополнительной информации смотрите Численные данные Тестирования.
На вкладке Verification Output приложение обеспечивает ссылку на отчет, который показывает сгенерированную фиксированную точку и предложенную информацию о типе.
Нажмите Next, чтобы перейти к странице Finish Workflow.
На странице Finish Workflow, отображения приложения сводные данные проекта и ссылки на сгенерированные выходные файлы.
Чтобы интегрировать версию фиксированной точки кода в симуляции уровня системы, сгенерируйте MEX-функцию, чтобы ускорить алгоритм фиксированной точки. Вызовите эту MEX-функцию вместо исходного алгоритма MATLAB.
Скопируйте ex_2ndOrder_filter_fixpt.m
к вашей локальной рабочей папке.
Сгенерируйте MEX-функцию для ex_2ndOrder_filter_fixpt.m
. Посмотрите на get_fimath
функция в ex_2ndOrder_filter_fixpt.m
файл, чтобы получить fimath
, и используйте отчет предложения по типу получить тип данных с фиксированной точкой для входа x
.
fm = fimath('RoundingMethod', 'Floor', 'OverflowAction', 'Wrap', 'ProductMode', 'FullPrecision', 'MaxProductWordLength', 128, 'SumMode', 'FullPrecision', 'MaxSumWordLength', 128); fiaccel ex_2ndOrder_filter_fixpt -args {fi( 0, 1, 16, 14, fm )}
fiaccel
генерирует MEX-функцию, ex_2ndOrder_filter_fixpt_mex
, в текущей папке.
Можно теперь вызвать эту MEX-функцию вместо исходного алгоритма MATLAB.