Для преобразования MATLAB® код, который использует глобальные данные для фиксированной точки:
Объявите переменные глобальными в коде.
Для получения дополнительной информации смотрите Объявить глобальные переменные
Перед использованием глобальных данных определите и инициализируйте их.
Для получения дополнительной информации см. раздел «Определение глобальных данных».
Преобразуйте код в фиксированную точку из 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.
Для преобразования use_globals
функция, описанная в Declare Global Variables, необходимо сначала определить и инициализировать глобальные данные.
global AR B;
AR = ones(4);
B=[1 2 3];
На странице Define Input Types после выбора и запуска тестового файла выберите Yes рядом с Does this code use global variables.
По умолчанию Fixed-Point Converter называет первую глобальную переменную в проекте g
.
Введите имена глобальных переменных, используемых в коде. После добавления глобальной переменной задайте ее тип.
Щелкните 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
.Если вы знаете, что значение глобальной переменной не меняется во время исполнения, можно уменьшить накладные расходы в коде с фиксированной точкой, указав, что глобальная переменная имеет постоянное значение. Вы не можете записать в постоянную глобальную переменную.
На странице Define Input Types после выбора и запуска тестового файла выберите Yes рядом с Does this code use global variables.
Введите имя глобальных переменных, используемых в коде.
Щелкните поле справа от глобальной переменной.
Выберите Define Constant Value
.
В поле справа от постоянной глобальной переменной введите выражение MATLAB.
Чтобы указать, что глобальная переменная является постоянной, используйте fiaccel
команда, используйте -globals
опция со coder.Constant
класс.
Задайте объект строения преобразования с фиксированной точкой.
cfg = coder.config('fixpt');
Использовать coder.Constant
чтобы указать, что глобальная переменная имеет постоянное значение. Для примера этот код задает, что глобальная переменная g
имеет начальное значение 4
и эта глобальная переменная gc
имеет постоянное значение 42
.
global_values = {'g', 4, 'gc', coder.Constant(42)};
Преобразуйте код в фиксированную точку с помощью -globals
опция. Для примера преобразуйте myfunction
в фиксированную точку, указывая, что глобальные переменные заданы в массиве ячеек global_values
.
fiaccel -float2fixed cfg -global global_values myfunction
Отчет генерации кода предоставляет эту информацию о постоянной глобальной переменной:
Тип Global
на вкладке Variables.
Имя подсвеченной переменной на панели Function.