В этом примере показано, как заменить exp функция с приближением интерполяционной таблицы в коде с фиксированной точкой, сгенерированная с помощью приложения Fixed-Point Converter.
Чтобы завершить этот пример, необходимо установить следующие продукты:
MATLAB®
Fixed-Point 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 );
Перейдите к рабочей папке, содержащей файл для этого примера.
На вкладке Apps MATLAB Toolstrip, в разделе Code Generation, щелкните значок приложения.

Чтобы добавить функцию точки входа my_fcn в проект перейдите к файлу my_fcn.m, а затем нажмите Open. По умолчанию приложение сохраняет информацию и настройки для этого проекта в текущей папке в файле с именем my_fcn.prj.
Щелкните Next, чтобы перейти к Define Input Types шагу.
Окно приложения my_fcn.m для нарушений кода и проблем готовности преобразования с фиксированной точкой. Приложение открывает страницу Review Code Generation Readiness.
Нажмите Review Issues. Приложение указывает, что exp функция не поддерживается для преобразования с фиксированной точкой. На более позднем этапе вы задаете замену интерполяционной таблицы для этой функции.

Щелкните Next, чтобы перейти к Define Input Types шагу.
Добавить my_fcn_test в качестве тестового файла и затем нажмите Autodefine Input Types.
Тестовый файл запускается. Приложение определяет из тестового файла, что x является скалярным двойником.
Щелкните Next, чтобы перейти к Convert to Fixed Point шагу.
Выберите вкладку Function Replacements.
Приложение указывает, что вы должны заменить exp функция.

На вкладке Function Replacements щелкните правой кнопкой мыши по exp и выберите Lookup Table.

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

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

Нажмите Analyze.
Симуляция выполняется. На вкладке Variables приложение отображает минимальные и максимальные области значений симуляции. Используя данные области значений симуляции, программное обеспечение предлагает фиксированные точки для каждой переменной на основе настроек предложения по типу по умолчанию и отображает их в столбце Proposed Type. Приложение включает опцию Convert.
Исследуйте предлагаемые типы и проверьте, что они охватывают полную область значений симуляции. Чтобы просмотреть записанные данные гистограммы для переменной, щелкните поле Proposed Type. Гистограмма предоставляет информацию о области значений и процентном отношении области симуляций, охватываемой предложенным типом данных.

Нажмите Convert.
Приложение проверяет предлагаемые типы и генерирует версию функции точки входа с фиксированной точкой my_fcn_fixpt.m.
В списке Output Files выберите 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. Если поведение сгенерированного кода с фиксированной точкой недостаточно тесно совпадает с поведением оригинального кода, измените метод интерполяции или число точек, используемых в интерполяционной таблице. Затем перегенерируйте код.