Чтобы преобразовать код MATLAB ®, использующий глобальные данные, в код с фиксированной точкой:
Объявите переменные глобальными в коде.
Дополнительные сведения см. в разделе Объявление глобальных переменных
Перед использованием глобальных данных определите и инициализируйте их.
Дополнительные сведения см. в разделе Определение глобальных данных.
Преобразование кода в фиксированную точку из преобразователя фиксированной точки или с помощью 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.
Чтобы преобразовать use_globals функция, описанная в Объявлении глобальных переменных, должна сначала определить и инициализировать глобальные данные.
global AR B;
AR = ones(4);
B=[1 2 3];
На странице Определение типов ввода (Define Input Types) после выбора и запуска тестового файла выберите Да (Yes) рядом с пунктом Использует ли этот код глобальные переменные (Does this code use global variables).
По умолчанию конвертер фиксированных точек называет первую глобальную переменную в проекте g.
Введите имена глобальных переменных, используемых в коде. После добавления глобальной переменной укажите ее тип.
Щелкните Добавить глобальные, чтобы ввести дополнительные глобальные переменные.
Примечание
Если тип не указан, необходимо создать переменную с тем же именем в глобальной рабочей области.
Для определения глобальных данных в командной строке используйте 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]}} myfunctioncoder.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 на вкладке Переменные.
Имя выделенной переменной на панели «Функция».