Преобразуйте код, содержащий глобальные данные, в фиксированную точку

Рабочий процесс

Для преобразования MATLAB® код, который использует глобальные данные для фиксированной точки:

  1. Объявите переменные глобальными в коде.

    Для получения дополнительной информации смотрите Объявить глобальные переменные

  2. Перед использованием глобальных данных определите и инициализируйте их.

    Для получения дополнительной информации см. раздел «Определение глобальных данных».

  3. Преобразуйте код в фиксированную точку из Fixed-Point Converter или используя fiaccel.

Этот Fixed-Point Converter всегда синхронизирует глобальные данные между MATLAB и сгенерированными MEX-функциями.

Объявление глобальных переменных

При использовании глобальных данных необходимо сначала объявить глобальные переменные в коде MATLAB. Этот код показывает use_globals функция, которая использует две глобальные переменные, AR и B.

function y = use_globals(u)
%#codegen
% Declare AR and B as global variables
global AR;
global B;
AR(1) = u + B(1);
y = AR * 2;

Определение глобальных данных

Можно задать глобальные данные в глобальной рабочей области MATLAB, в проекте Fixed-Point Converter или в командной строке. Если вы не инициализируете глобальные данные в проекте или в командной строке, программное обеспечение ищет переменную в глобальной рабочей области MATLAB.

Задайте глобальные данные в глобальной рабочей области MATLAB

Для преобразования use_globals функция, описанная в Declare Global Variables, необходимо сначала определить и инициализировать глобальные данные.

global AR B;
AR = ones(4);
B=[1 2 3];

Определите глобальные данные в проекте Fixed-Point Converter

  1. На странице Define Input Types после выбора и запуска тестового файла выберите Yes рядом с Does this code use global variables.

    По умолчанию Fixed-Point Converter называет первую глобальную переменную в проекте g.

  2. Введите имена глобальных переменных, используемых в коде. После добавления глобальной переменной задайте ее тип.

  3. Щелкните Add global, чтобы ввести больше глобальных переменных.

    Примечание

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

Задайте глобальные данные в командной строке

Чтобы задать глобальные данные в командной строке, используйте fiaccel -globals опция. Для примера преобразуйте use_globals функция, описанная в Declare Global Variables to fixed-point, задает два глобальных входов, AR и B, в командной строке. Используйте -args опция, чтобы указать, что вход u - действительный, скалярный двойник.

fiaccel -float2fixed cfg -global {'AR',ones(4),'B',[1 2 3]} use_globals -args {0}
Кроме того, задайте тип и начальное значение с -globals флаг, использующий формат -globals {'g', {type, initial_value}}.

Чтобы предоставить начальные значения для глобальных данных переменного размера, задайте тип и начальное значение с -globals флаг, использующий формат -globals {'g', {type, initial_value}}. Например, чтобы задать глобальную переменную g которое имеет начальное значение [1 1] и верхняя граница [2 2], введите:

fiaccel -float2fixed cfg -global {'g', {coder.typeof(0, [2 2],1),[1 1]}} myfunction
Подробное объяснение синтаксиса смотрите в coder.typeof.

Задайте постоянные глобальные данные

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

Задайте постоянные глобальные данные в Fixed-Point Converter

  1. На странице Define Input Types после выбора и запуска тестового файла выберите Yes рядом с Does this code use global variables.

  2. Введите имя глобальных переменных, используемых в коде.

  3. Щелкните поле справа от глобальной переменной.

  4. Выберите Define Constant Value.

  5. В поле справа от постоянной глобальной переменной введите выражение MATLAB.

Задайте постоянные глобальные данные в командной строке

Чтобы указать, что глобальная переменная является постоянной, используйте fiaccel команда, используйте -globals опция со coder.Constant класс.

  1. Задайте объект строения преобразования с фиксированной точкой.

    cfg = coder.config('fixpt');
    

  2. Использовать coder.Constant чтобы указать, что глобальная переменная имеет постоянное значение. Для примера этот код задает, что глобальная переменная g имеет начальное значение 4 и эта глобальная переменная gc имеет постоянное значение 42.

    global_values = {'g', 4, 'gc', coder.Constant(42)};
  3. Преобразуйте код в фиксированную точку с помощью -globals опция. Для примера преобразуйте myfunction в фиксированную точку, указывая, что глобальные переменные заданы в массиве ячеек global_values.

    fiaccel -float2fixed cfg -global global_values myfunction

Постоянные глобальные данные в отчете генерации кода

Отчет генерации кода предоставляет эту информацию о постоянной глобальной переменной:

  • Тип Global на вкладке Variables.

  • Имя подсвеченной переменной на панели Function.

Похожие темы