exponenta event banner

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

Технологический процесс

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

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

    Дополнительные сведения см. в разделе Объявление глобальных переменных

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

    Дополнительные сведения см. в разделе Определение глобальных данных.

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

Преобразователь фиксированной точки всегда синхронизирует глобальные данные между 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, в проекте конвертера фиксированных точек или в командной строке. Если глобальные данные не инициализированы в проекте или в командной строке, программа ищет переменную в глобальном рабочем пространстве MATLAB.

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

Чтобы преобразовать use_globals функция, описанная в Объявлении глобальных переменных, должна сначала определить и инициализировать глобальные данные.

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

Определение глобальных данных в проекте преобразователя с фиксированной точкой

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

    По умолчанию конвертер фиксированных точек называет первую глобальную переменную в проекте g.

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

  3. Щелкните Добавить глобальные, чтобы ввести дополнительные глобальные переменные.

    Примечание

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

Определение глобальных данных в командной строке

Для определения глобальных данных в командной строке используйте fiaccel -globals вариант. Например, для преобразования use_globals функция, описанная в объявлении глобальных переменных для фиксированной точки, укажите два глобальных входа, 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.

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

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

Определение постоянных глобальных данных в преобразователе с фиксированной точкой

  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 на вкладке Переменные.

  • Имя выделенной переменной на панели «Функция».

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