Код MATLAB ® с плавающей запятой можно преобразовать в код с фиксированной запятой с помощью приложения Fixed-Point Converter или в командной строке с помощью fiaccel функция -float2fixed вариант. Можно предложить типы данных на основе данных диапазона моделирования, производных (также известных как статические) данных диапазона или и того, и другого.
Можно вручную ввести статические диапазоны. Эти диапазоны, введенные вручную, имеют приоритет над диапазонами моделирования, и приложение использует их при предложении типов данных. Кроме того, можно изменить и заблокировать предлагаемый тип, чтобы приложение не могло его изменить. Дополнительные сведения см. в разделе Блокировка предлагаемых типов данных.
Список поддерживаемых функций и функций MATLAB см. в разделе Языковые функции MATLAB, поддерживаемые для автоматического преобразования с фиксированной точкой.
При преобразовании с фиксированной точкой можно:
Убедитесь, что тестовые файлы охватывают весь предполагаемый рабочий диапазон алгоритма, используя результаты покрытия кода.
Предлагать длины дробей на основе длин слов по умолчанию.
Предлагать длины слов на основе длин дробей по умолчанию.
Оптимизация целых чисел.
Укажите пределы безопасности для данных min/max моделирования.
Убедитесь, что можно построить проект с предлагаемыми типами данных.
Проверка номеров путем запуска тестового файла с использованием типов с фиксированной точкой.
Просмотр гистограммы битов, используемых каждой переменной.
Обнаружение переполнений.
По умолчанию приложение отображает результаты покрытия кода. Тестовые файлы должны использовать алгоритм в полном рабочем диапазоне, чтобы диапазоны моделирования были точными. Качество предлагаемых типов данных с фиксированной точкой зависит от того, насколько хорошо тестовые файлы охватывают рабочий диапазон алгоритма с требуемой точностью.
Проверка результатов покрытия кода позволяет убедиться в том, что тестовые файлы используют алгоритм надлежащим образом. Если покрытие кода является недостаточным, измените тестовые файлы или добавьте дополнительные тестовые файлы для увеличения покрытия. При моделировании нескольких тестовых файлов за один прогон приложение отображает совокупный охват. Однако если указать несколько тестовых файлов, но запускать их по одному, приложение отобразит охват последнего файла.
Приложение отображает цветовую строку покрытия слева от кода.

В этой таблице описывается цветовое кодирование.
| Цвет панели покрытия | Указывает |
|---|---|
| Зеленый |
Одна из следующих ситуаций:
Различные оттенки зеленого обозначают различные диапазоны счетчиков выполнения строк. Самый темный оттенок зеленого указывает на самый высокий диапазон. |
| Оранжевый | Функция точки входа выполняется несколько раз, но код выполняется один раз. |
| Красный | Код не выполняется. |
При наведении курсора на панель покрытия цветовая подсветка распространяется на код. Для каждого раздела кода приложение отображает количество запусков раздела.

Чтобы убедиться, что тестовые файлы тестируют алгоритм в заданном рабочем диапазоне, просмотрите результаты покрытия кода.
| Цвет панели покрытия | Действие |
|---|---|
| Зеленый | Если ожидается, что разделы кода будут выполняться чаще, чем показано на экране покрытия, измените код MATLAB или тестовые файлы. |
| Оранжевый | Такое поведение ожидается для кода инициализации, например, для инициализации постоянных переменных. Если ожидается, что код будет выполняться более одного раза, измените код MATLAB или тестовые файлы. |
| Красный | Если код, который не выполняется, является условием ошибки, такое поведение является приемлемым. Если ожидается выполнение кода, измените код MATLAB или тестовые файлы. Если код написан консервативно и имеет верхний и нижний граничные пределы, и вы не можете изменить тестовые файлы, чтобы достичь этого кода, добавьте статические минимальные и максимальные значения. См. раздел Вычисление производных диапазонов. |
Покрытие кода включено по умолчанию. Выключите его только после проверки того, что у вас есть адекватный охват тестовых файлов. Отключение покрытия кода может ускорить моделирование. Чтобы отключить покрытие кода, на странице Преобразовать в фиксированную точку:
Щелкните стрелку Анализ (Analyze).![]()
Снимите флажок Показать покрытие кода.
Приложение предлагает типы данных с фиксированной точкой на основе вычисленных диапазонов и настройки длины слова или дроби. Вычисленные диапазоны основаны на данных диапазона моделирования, производных данных диапазона (также известных как статические диапазоны) или обоих. При запуске моделирования и вычислении производных диапазонов приложение объединяет моделирование и производные диапазоны.
Примечание
Нельзя предлагать типы данных на основе производных диапазонов для классов MATLAB.
Анализ производного диапазона не поддерживается для несалярных переменных.
Можно вручную ввести статические диапазоны. Эти диапазоны, введенные вручную, имеют приоритет над диапазонами моделирования, и приложение использует их при предложении типов данных. Предлагаемый тип можно изменить и заблокировать, чтобы инструмент не мог изменить его. Дополнительные сведения см. в разделе Блокировка предлагаемых типов данных.
Во время преобразования с фиксированной точкой приложение создает инструментальную функцию MEX для файла MATLAB начальной точки. Если построение завершается без ошибок, приложение отображает скомпилированную информацию (тип, размер, сложность) для функций и переменных в коде. Для перехода к локальным функциям перейдите на вкладку Функции. Если возникают ошибки построения, приложение предоставляет сообщения об ошибках, которые ссылаются на строку кода, вызвавшую проблемы построения. Перед запуском моделирования необходимо устранить эти ошибки. Используйте ссылку для перехода к нарушающей строку кода в редакторе MATLAB и измените код, чтобы устранить проблему. Если в коде используются функции, которые не поддерживаются для преобразования с фиксированной точкой, приложение отображает их на вкладке Замены функций. См. раздел Замены функций.
Перед запуском моделирования укажите тестовый файл или файлы, которые необходимо запустить. При выполнении моделирования приложение запускает тестовый файл, вызывая инструментальную функцию MEX. При изменении кода конструкции MATLAB приложение автоматически создает обновленную функцию MEX перед запуском тестового файла.
Если тестовый файл выполняется успешно, минимальные и максимальные значения моделирования и предлагаемые типы отображаются на вкладке Variables. При ручном вводе статических диапазонов для переменной введенные вручную диапазоны имеют приоритет над диапазонами моделирования. При ручном изменении предлагаемых типов путем ввода или использования гистограммы типы данных блокируются, чтобы приложение не могло их изменить.
Если файл теста завершается неуспешно, ошибки отображаются на вкладке Output.
Тестовые файлы должны использовать ваш алгоритм в полном рабочем диапазоне. Качество предлагаемых типов данных с фиксированной точкой зависит от того, насколько хорошо тестовый файл охватывает рабочий диапазон алгоритма с требуемой точностью. Можно добавить тестовые файлы и выбрать запуск нескольких тестовых файлов во время моделирования. При запуске нескольких тестовых файлов приложение объединяет результаты моделирования.
При необходимости можно выбрать запись данных для гистограмм. После выполнения моделирования можно просмотреть гистограмму для каждой переменной. Дополнительные сведения см. в разделе Данные журнала для гистограммы.
Преимущество предложения типов данных, основанных на производных диапазонах, состоит в том, что нет необходимости предоставлять тестовые файлы, выполняющие алгоритм в полном рабочем диапазоне. Выполнение таких тестовых файлов часто занимает очень много времени. Приложение может вычислять производные диапазоны только для скалярных переменных.
Чтобы вычислить производные диапазоны и предложить типы данных на основе этих диапазонов, предоставьте статические минимальные и максимальные значения или предлагаемые типы данных для всех входных переменных. Чтобы улучшить анализ, введите как можно больше статической информации о диапазоне для других переменных. Можно вручную вводить диапазоны или продвигать диапазоны моделирования для использования в качестве статических диапазонов. Введенные вручную статические диапазоны всегда имеют приоритет над диапазонами моделирования.
Если вы знаете, какой тип данных использует ваша аппаратная цель, задайте предлагаемые типы данных в соответствии с этим типом. Введенные вручную типы данных заблокированы, поэтому приложение не может их изменить. Приложение использует эти типы данных для вычисления входных минимальных и максимальных значений и получения диапазонов для других переменных. Дополнительные сведения см. в разделе Блокировка предлагаемых типов данных.
При выборе опции Вычислить производные диапазоны приложение выполняет анализ производных диапазонов для вычисления статических диапазонов для переменных в алгоритме MATLAB. По завершении анализа статические диапазоны отображаются на вкладке Переменные (Variables). Если прогон создает +/-Inf производные диапазоны, рассмотрите возможность определения диапазонов для всех постоянных переменных.
При необходимости можно выбрать Быстрый анализ производного диапазона. С помощью этого параметра приложение выполняет более быстрый статический анализ. Вычисленные диапазоны могут быть больше необходимых. Выберите этот параметр в случаях, когда статический анализ занимает больше времени, чем вы можете себе позволить.
Если анализ производного диапазона для проекта занимает много времени, можно дополнительно установить тайм-аут. Когда тайм-аут достигнут, приложение прерывает анализ.
Предлагаемые типы данных можно заблокировать от изменений в приложении одним из следующих способов:
Установка предложенного типа данных в приложении вручную.
Щелчок правой кнопкой мыши на типе, предложенном инструментом, и выбор Lock computed value.
Приложение отображает заблокированные типы данных полужирным шрифтом, чтобы их было легко идентифицировать. Разблокировать тип можно одним из следующих способов:
Перезапись вручную.
Щелкните его правой кнопкой мыши и выберите Undo changes. Это действие разблокирует только выбранный тип.
Щелчок правой кнопкой мыши и выбор Undo changes for all variables. Это действие разблокирует все заблокированные предлагаемые типы.
На шаге Преобразовать в фиксированную точку (Convert to Fixed Point) процесса преобразования фиксированных точек можно просмотреть список функций в проекте на левой панели. Этот список также включает специализации функций и методы классов. При выборе функции из списка код MATLAB для этой функции или метода класса отображается в окне кода, а переменные, которые они используют, отображаются на вкладке Переменные.
После преобразования на левой панели также отображается список выходных файлов, включая версию исходного алгоритма с фиксированной точкой. Если ваша функция не является специализированной, приложение сохраняет исходное имя функции в имени файла с фиксированной точкой и добавляет суффикс с фиксированной точкой. Например, здесь версия с фиксированной точкой ex_2ndOrder_filter.m является ex_2ndOrder_filter_fixpt.m.

Приложение отображает информацию для класса и каждого из его методов. Например, рассмотрим класс, Counter, который имеет статический метод, MAX_VALUEи метод, next.
При выборе класса приложение отображает класс и его свойства на вкладке Переменные.

При выборе метода приложение отображает только переменные, используемые методом.

Если функция является специализированной, приложение перечисляет каждую специализацию и нумерует их последовательно. Например, рассмотрим функцию, dut, которая вызывает подфункции, foo и bar, несколько раз с различными типами ввода.
function y = dut(u, v) tt1 = foo(u); tt2 = foo([u v]); tt3 = foo(complex(u,v)); ss1 = bar(u); ss2 = bar([u v]); ss3 = bar(complex(u,v)); y = (tt1 + ss1) + sum(tt2 + ss2) + real(tt3) + real(ss3); end function y = foo(u) y = u * 2; end function y = bar(u) y = u * 4; end
При выборе функции верхнего уровня приложение отображает все переменные на вкладке Переменные.

Если выбрать древовидное представление, приложение также отобразит номера строк для вызова каждой специализации.

При выборе специализации приложение отображает только переменные, используемые специализацией.

В сгенерированном коде с фиксированной запятой номер каждой специализации с фиксированной запятой совпадает с номером в списке Исходный код, что упрощает трассировку между версиями кода с плавающей и фиксированной запятой. Например, сгенерированная функция с фиксированной точкой для foo > 1 назван foo_s1.

Вкладка Переменные (Variables) предоставляет следующую информацию для каждой переменной в функции, выбранной на панели Навигация (Navigation).
Тип - исходный тип данных переменной в алгоритме MATLAB.
Sim Min и Sim Max - минимальное и максимальное значения, назначенные переменной во время моделирования.
Можно изменить минимальное и максимальное значения моделирования. Отредактированные поля выделены полужирным шрифтом. Редактирование этих полей не инициирует статический анализ диапазона, но инструмент использует отредактированные значения в последующих анализах. Вы можете вернуться к типам, предложенным приложением.
Статический минимум и статический максимум - статические минимальные и максимальные значения.
Чтобы вычислить производные диапазоны и предложить типы данных на основе этих диапазонов, предоставьте статические минимальные и максимальные значения для всех входных переменных. Чтобы улучшить анализ, введите как можно больше статической информации о диапазоне для других переменных.
При вычислении производных диапазонов приложение выполняет статический анализ для вычисления статических диапазонов для переменных в коде. По завершении анализа отображаются статические диапазоны. Вычисленные результаты можно редактировать. Отредактированные поля выделены полужирным шрифтом. Редактирование этих полей не инициирует статический анализ диапазона, но инструмент использует отредактированные значения в последующих анализах. Вы можете вернуться к типам, предложенным приложением.
Целое число (Whole Number) - являются ли все значения, назначенные переменной во время моделирования целыми числами.
Приложение определяет, всегда ли переменная является целым числом. Это поле можно изменить. Отредактированные поля выделены полужирным шрифтом. Редактирование этих полей не инициирует статический анализ диапазона, но приложение использует отредактированные значения в последующих анализах. Вы можете вернуться к типам, предложенным приложением.
Предлагаемый тип данных с фиксированной точкой для указанной длины слова (или дроби). Предлагаемые типы данных используют numerictype нотация. Например, numerictype(1,16,12) обозначает знаковый тип с фиксированной точкой с длиной слова 16 и длиной дроби 12. numerictype(0,16,12) обозначает беззнаковый тип с фиксированной точкой с длиной слова 16 и длиной дроби 12.
Поскольку приложение не применяет типы данных к выражениям, оно не отображает предлагаемые типы для них. Вместо этого отображаются исходные типы данных.
Можно также просматривать и редактировать информацию о переменных в области кода, наведя курсор на имя переменной.
Вы можете использовать Ctrl+F для поиска переменных в коде MATLAB и на вкладке Переменные. Приложение выделяет вхождения в коде и отображает только переменную с указанным именем на вкладке Переменные.
Приложение отображает:
Код для классов MATLAB и покрытие кода для методов классов в окне кода. Используйте список Исходный код (Source Code) на странице Преобразовать в фиксированную точку (Convert to Fixed Point), чтобы выбрать класс или метод класса для просмотра. При выборе метода класса приложение выделяет метод в окне кода.

Информация о классах MATLAB на вкладке Переменные.

Для регистрации данных гистограмм:
На странице «Преобразовать в фиксированную точку» щелкните стрелку «Анализ».![]()
Выберите Данные журнала для гистограммы.

Щелкните Анализ диапазонов (Analyze Ranges).
После моделирования для просмотра гистограммы переменной на вкладке Переменные щелкните поле Предлагаемый тип для этой переменной.
Гистограмма предоставляет диапазон предлагаемого типа данных и процент значений моделирования, которые охватывает предлагаемый тип данных. Веса битов отображаются вдоль оси X, а процент вхождений - вдоль оси Y. Каждый элемент в гистограмме соответствует биту в двоичном слове. Например, эта гистограмма отображает диапазон для переменной типа numerictype(1,16,14).

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

Выбор или отмена подписи.
Чтобы вернуться к типам, предложенным при автоматическом преобразовании, в окне гистограммы щелкните.![]()
Если в коде MATLAB используются функции, не поддерживающие фиксированные точки, приложение перечисляет эти функции на вкладке Замены функций. Можно заменить неподдерживаемые функции пользовательской заменой функций или таблицей подстановки.
Из этого списка можно добавлять и удалять замены функций. При вводе замены функции эта функция используется при построении проекта. Если замена не введена, приложение использует тип, указанный в исходном коде MATLAB для функции.
Примечание
С помощью этой таблицы можно заменить имена функций, но нельзя заменить шаблоны аргументов.
Если проверка готовности к созданию кода отключена, список неподдерживаемых функций на вкладке Замены функций может быть неполным или неправильным. В этом случае добавьте функции вручную. Смотрите.
Преобразование кода в фиксированную точку позволяет проверить построение с использованием предлагаемых типов данных с фиксированной точкой. Если проверка прошла успешно, можно проверить численное поведение алгоритма MATLAB с фиксированной точкой.
Если ошибки или предупреждения возникают во время проверки, они отображаются на вкладке Вывод (Output). При возникновении ошибок или предупреждений:
На вкладке Переменные проверьте предлагаемые и измененные вручную типы, чтобы убедиться в их допустимости.
На вкладке Замены функций убедитесь, что вы предоставили замены функций для неподдерживаемых функций.
После преобразования кода в фиксированную точку и проверки предлагаемых типов данных с фиксированной точкой щелкните Тест, чтобы проверить поведение алгоритма MATLAB с фиксированной точкой. По умолчанию, если вы добавили тестовый файл для определения входных данных или запуска моделирования, приложение использует этот тестовый файл для проверки цифр. При необходимости можно добавить тестовые файлы и выбрать запуск нескольких тестовых файлов. Приложение сравнивает численное поведение сгенерированного кода MATLAB с фиксированной запятой с исходным кодом MATLAB с плавающей запятой. Если выбрано ведение журнала входов и выходов для графиков сравнения, приложение создает дополнительный график для каждого скалярного вывода. Этот график показывает результаты с плавающей и фиксированной точками и разницу между ними. Для нескалярных выходов отображается только информация об ошибках.
Если после моделирования с фиксированной точкой числовые результаты не соответствуют требуемой точности, измените настройки типа данных с фиксированной точкой и повторите шаги проверки типа и числового тестирования. Для достижения нужных результатов может потребоваться многократная итерация этих шагов.
При тестировании чисел выбор параметра Использовать масштабированные двойные значения для обнаружения переполнений позволяет обнаружить переполнение. Если выбран этот параметр, приложение преобразования запускает моделирование с использованием масштабированных двойных версий предлагаемых типов с фиксированной точкой. Поскольку масштабированные двойники хранят свои данные в плавающей точке с двойной точностью, они выполняют арифметику в полном диапазоне. Они также сохраняют свои настройки фиксированной точки, так что они могут сообщать, когда вычисления выходят за пределы диапазона типа фиксированной точки. Дополнительные сведения см. в разделе Масштабированные двойники.
Если приложение обнаруживает переполнение, на своей вкладке Переполнение оно предоставляет:
Список переменных и выражений, переполненных
Информация о том, насколько переполнена каждая переменная
Ссылка на переменные или выражения в окне кода

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