В этом примере показано, как использовать структуры MATLAB® в графике Stateflow®. Структуры MATLAB позволяют вам связать данные различных размеров и типов вместе в одну переменную в функции MATLAB. Можно создать структуру MATLAB к:
Связанные с хранилищем данные в локальной или персистентной переменной функции MATLAB
Читайте из или запишите в локальную структуру Stateflow
Интерфейс с Simulink® соединяет шиной сигнал в порте ввода или вывода
Функции MATLAB поддерживают невиртуальные шины только. Для получения дополнительной информации смотрите Типы Составных Сигналов.
В этом примере диаграмма Stateflow обрабатывает данные от одного сигнала шины Simulink и выводит результат к другому сигналу шины Simulink. Оба сигналы шины ввода и вывода заданы Simulink.Bus
объект BusObject
. Эти шины имеют четыре поля: sb
A
B
, и c
. Поле sb
также сигнал шины, заданный Simulink.Bus
объект SubBus
. Это имеет одно поле под названием ele
.
В графике шина Simulink сигнализирует об интерфейсе со структурами Stateflow in
и out
. Функции abc2sb
и sb2abc
извлеките информацию из входной структуры и сохраните его в локальных структурах Stateflow localbus
и subbus
. Затем график пишет в структуру output путем объединения значений этих локальных структур. Для получения дополнительной информации о структурах Stateflow смотрите доступ к Сигналам Шины Через Структуры Stateflow.
Функция MATLAB® sb2abc
берет структуру Stateflow типа SubBus
и возвращает структуру Stateflow типа BusObject
. Функция анализирует значение поля ele
от его входа на три компонента: вектор, 3-на-2 матрица и скаляр. Функция хранит эти компоненты в локальном MATLAB struct
Y
это имеет ту же структуру как Simulink.Bus
объект BusObject
. Затем функция присваивает значение struct
MATLAB
Y
к структуре output y
.
function y = sb2abc(u)
% extract data from input structure
E = int8(magic(3)); A = double(u.ele(1:2,1)); B = uint8(u.ele(:,2:3)); C = double(u.ele(3,1));
% create local structure
X = struct('ele',E); Y = struct('sb',X,'a',A,'b',B,'c',C);
% assign value to output structure
y = Y;
end
В функции MATLAB получите доступ к локальной структуре Stateflow или интерфейсу с сигналом шины Simulink путем определения структур ввода и вывода для функции:
В базовом рабочем пространстве создайте Simulink.Bus
объект, который задает тип данных структуры.
В панели Символов выберите входной параметр функции или выведите.
В Property Inspector, набор свойство Type к Bus: <object name>
. Замените <имя объекта> на имя Simulink.Bus
объект, который задает структуру Stateflow.
Например, в функциональном sb2abc
:
Свойство Type входной структуры u
задан как Bus: SubBus
.
Свойство Type структуры output y
задан как Bus: BusObject
.
Для получения дополнительной информации смотрите, Задают Структуры Stateflow.
К связанным с хранилищем данным в одной переменной в функции MATLAB можно создать struct
MATLAB как локальная или персистентная переменная. Например, функциональный
sb2abc
задает две локальных структуры MATLAB, чтобы временно хранить данные, извлеченные из входной структуры u
прежде, чем записать в структуру output y
:
X
скалярный struct
с одним полем под названием ele
. Это поле содержит 3х3 матрицу типа int8
, который совпадает со структурой Simulink.Bus
объект SubBus
.
Y
скалярный struct
с четырьмя полями: sb
подструктура типа SubBus
A
двумерный вектор из типа double
B
3-на-2 матрица типа uint8
, и c
скаляр типа double
. Эти поля совпадают со структурой Simulink.Bus
объект BusObject
.
Для получения дополнительной информации смотрите, Задают Скалярные Структуры для Генерации кода.