exponenta event banner

Заменить exp-функцию таблицей подстановки

В этом примере показано, как заменить exp функция с аппроксимацией таблицы подстановки в коде с фиксированной точкой, созданном с помощью приложения Fixed-Point Converter.

Предпосылки

Для завершения этого примера необходимо установить следующие продукты:

Создание алгоритмов и тестовых файлов

  1. Создайте функцию MATLAB, my_fcn.m, который вызывает exp функция.

    function y = my_fcn(x)
        y = exp(x);
    end
  2. Создайте тестовый файл, 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 );

Откройте приложение конвертера с фиксированной точкой

  1. Перейдите к рабочей папке, содержащей файл для этого примера.

  2. На вкладке Приложения MATLAB Toolstrip в разделе Создание кода щелкните значок приложения.

Выбор исходных файлов

  1. Добавление функции точки входа my_fcn в проект, перейдите к файлу my_fcn.mи нажмите кнопку Открыть. По умолчанию приложение сохраняет информацию и параметры этого проекта в текущей папке в файле с именем my_fcn.prj.

  2. Нажмите кнопку Далее (Next), чтобы перейти к шагу Определить типы ввода (Define Input Types).

    Экраны приложений my_fcn.m для нарушений кода и проблем готовности к преобразованию с фиксированной точкой. Приложение открывает страницу «Проверка готовности к созданию кода».

Проверка готовности к созданию кода

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

  2. Нажмите кнопку Далее (Next), чтобы перейти к шагу Определить типы ввода (Define Input Types).

Определение типов ввода

  1. Добавить my_fcn_test в качестве тестового файла, а затем щелкните Автоопределить типы ввода.

    Тестовый файл запускается. Приложение определяет из тестового файла, что x является скалярным двойником.

  2. Нажмите кнопку Далее (Next), чтобы перейти к шагу Преобразовать в фиксированную точку (Convert to Fixed Point).

Заменить exp-функцию на таблицу подстановки

  1. Выберите вкладку Замены функций.

    Приложение указывает, что необходимо заменить exp функция.

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

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

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

  4. Щелкните Анализ (Analyze).

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

  5. Проверьте предлагаемые типы и убедитесь, что они охватывают весь диапазон моделирования. Чтобы просмотреть данные зарегистрированной гистограммы для переменной, щелкните ее поле Предлагаемый тип. Гистограмма предоставляет информацию о диапазоне и процент диапазона моделирования, охватываемого предлагаемым типом данных.

Преобразовать в фиксированную точку

  1. Щелкните Преобразовать (Convert).

    Приложение проверяет предложенные типы и генерирует версию функции начального уровня с фиксированной точкой. my_fcn_fixpt.m.

  2. В списке «Выходные файлы» выберите 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. Если поведение сгенерированного кода с фиксированной точкой недостаточно близко соответствует поведению исходного кода, измените метод интерполяции или количество точек, используемых в таблице поиска. Затем восстановите код.

Связанные темы