В этом примере показано, как заменить exp функция с аппроксимацией таблицы подстановки в коде с фиксированной точкой, созданном с помощью приложения Fixed-Point Converter.
Для завершения этого примера необходимо установить следующие продукты:
MATLAB ®
Designer™ с фиксированной точкой
Компилятор C
См. раздел Поддерживаемые компиляторы.
Вы можете использовать mex -setup для изменения компилятора по умолчанию. См. раздел Изменение компилятора по умолчанию.
Создайте функцию MATLAB, my_fcn.m, который вызывает exp функция.
function y = my_fcn(x) y = exp(x); end
Создайте тестовый файл, my_fcn_test.m, которая использует my_fcn.m.
close all x = linspace(-10,10,1e3); for itr = 1e3:-1:1 y(itr) = my_fcn( x(itr) ); end plot( x, y );
Перейдите к рабочей папке, содержащей файл для этого примера.
На вкладке Приложения MATLAB Toolstrip в разделе Создание кода щелкните значок приложения.

Добавление функции точки входа my_fcn в проект, перейдите к файлу my_fcn.mи нажмите кнопку Открыть. По умолчанию приложение сохраняет информацию и параметры этого проекта в текущей папке в файле с именем my_fcn.prj.
Нажмите кнопку Далее (Next), чтобы перейти к шагу Определить типы ввода (Define Input Types).
Экраны приложений my_fcn.m для нарушений кода и проблем готовности к преобразованию с фиксированной точкой. Приложение открывает страницу «Проверка готовности к созданию кода».
Щелкните Просмотреть проблемы. Приложение указывает, что exp функция не поддерживается для преобразования с фиксированной точкой. На следующем шаге необходимо указать замену таблицы подстановки для этой функции.

Нажмите кнопку Далее (Next), чтобы перейти к шагу Определить типы ввода (Define Input Types).
Добавить my_fcn_test в качестве тестового файла, а затем щелкните Автоопределить типы ввода.
Тестовый файл запускается. Приложение определяет из тестового файла, что x является скалярным двойником.
Нажмите кнопку Далее (Next), чтобы перейти к шагу Преобразовать в фиксированную точку (Convert to Fixed Point).
Выберите вкладку Замены функций.
Приложение указывает, что необходимо заменить exp функция.

На вкладке Замены функций щелкните правой кнопкой мыши значок exp функция и выбор Lookup Table.

Приложение перемещает exp в список функций, которые будут заменены таблицей подстановки. По умолчанию в таблице подстановки используется линейная интерполяция и 1000 точек. Для параметров Design Min и Design Max установлены значения Auto это означает, что приложение использует минимальные и максимальные значения дизайна, которые оно обнаруживает, выполняя моделирование или вычисляя производные диапазоны.

Щелкните стрелку Analyze,
выберите Log data for histogram и убедитесь, что тестовый файл my_fcn_test.

Щелкните Анализ (Analyze).
Моделирование выполняется. На вкладке Переменные приложение отображает минимальный и максимальный диапазоны моделирования. Используя данные диапазона моделирования, программа предлагает типы фиксированных точек для каждой переменной на основе настроек предложения типа по умолчанию и отображает их в столбце Предлагаемый тип. Приложение включает параметр Преобразовать.
Проверьте предлагаемые типы и убедитесь, что они охватывают весь диапазон моделирования. Чтобы просмотреть данные зарегистрированной гистограммы для переменной, щелкните ее поле Предлагаемый тип. Гистограмма предоставляет информацию о диапазоне и процент диапазона моделирования, охватываемого предлагаемым типом данных.

Щелкните Преобразовать (Convert).
Приложение проверяет предложенные типы и генерирует версию функции начального уровня с фиксированной точкой. my_fcn_fixpt.m.
В списке «Выходные файлы» выберите my_fcn_fixpt.m.
Процесс преобразования генерирует аппроксимацию таблицы подстановки. replacement_exp, для exp функция.

Сгенерированная функция с фиксированной точкой, my_fcn_fixpt.m, вызывает это приближение вместо вызова exp. Процесс преобразования с фиксированной точкой выводит диапазоны для функции, а затем использует интерполированную таблицу поиска для замены функции. По умолчанию в таблице поиска используется линейная интерполяция, 1000 точек и минимальное и максимальное значения, обнаруженные при выполнении тестового файла.
function y = my_fcn_fixpt(x)
fm = get_fimath();
y = fi(replacement_exp(x), 0, 16, 1, fm);
endТеперь можно протестировать созданный код с фиксированной точкой и сравнить результаты с исходной функцией MATLAB. Если поведение сгенерированного кода с фиксированной точкой недостаточно близко соответствует поведению исходного кода, измените метод интерполяции или количество точек, используемых в таблице поиска. Затем восстановите код.