В этом примере показано, как преобразовать алгоритм MATLAB®, содержащий глобальные переменные к фиксированной точке с помощью приложения Fixed-Point Converter.
В локальной перезаписываемой папке создайте функциональный use_globals.m.
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;
В той же папке создайте тестовый файл, use_globals_tb.m это вызывает функцию.
u = 55;
global AR B;
AR = ones(4);
B=[1 2 3];
y = use_globals(u);На панели инструментов MATLAB, во вкладке Apps, под Code Generation, кликают по значку приложения Fixed-Point Converter.
Добавить функцию точки входа, use_globals.m к проекту, на странице Select Source Files, обзоре к файлу, и нажимают Open. Нажмите Next.
На странице Define Input Types добавьте use_globals_tb.m как тестовый файл. Нажмите Autodefine Input Types.
Приложение решает из тестового файла что входной тип входа u double(1x1).
Выберите Yes next to Does this code use global variables. По умолчанию приложение Fixed-Point Converter называет первую глобальную переменную в проекте g.
Введите на имена глобальных переменных в вашем коде. В поле справа от глобальной переменной AR, задайте его тип как double(4x4).
Глобальная переменная B не присвоен в use_globals функция. Задайте эту переменную как глобальную константу путем нажатия на поле справа от константы и выбора Define Constant Value. Введите в значении B когда это задано в тестовом файле, [1 2 3]. Приложение указывает на тот B имеет value[1 2 3]. Приложение указывает на тот AR не инициализируется.

Нажмите Next. Приложение генерирует оснащенную MEX-функцию для вашей функции MATLAB точки входа. На странице Convert to Fixed-Point нажмите Simulate, чтобы симулировать функцию, собрать информацию области значений и получить предложенные типы данных.
Нажмите Convert, чтобы принять предложенные типы данных и преобразовать функцию в фиксированную точку.
В сгенерированной фиксированной точке, глобальная переменная AR теперь AR_g.
Функция обертки содержит три глобальных переменные: AR, AR_g, и B, где AR_g установлен равный fi-casted AR, и AR установлен равный двойному литому AR_g. Глобальная переменная B не имеет отдельной переменной в фиксированной точке, потому что это - константа.

function y = use_globals_fixpt(u) %#codegen % Declare AR and B as global variables fm = get_fimath(); global AR_g; global B; AR_g(1) = fi(u + B(1), 0, 6, 0, fm); y = fi(AR_g * fi(2, 0, 2, 0, fm), 0, 7, 0, fm); end function fm = get_fimath() fm = fimath('RoundingMethod', 'Floor',... 'OverflowAction', 'Wrap', 'ProductMode', 'FullPrecision',... 'MaxProductWordLength', 128, 'SumMode', 'FullPrecision',... 'MaxSumWordLength', 128); end