exponenta event banner

Simulink. Bus.createMATLABStruct

Создание структур MATLAB, использующих ту же иерархию и атрибуты, что и шины

Описание

пример

structs = Simulink.Bus.createMATLABStruct(buses) создает одну или несколько структур MATLAB ®, которые имеют ту же иерархию и атрибуты, что и указанные шины. В полученных конструкциях используются значения грунта шин. Этот синтаксис используется для создания структур инициализации для нескольких портов шины.

пример

structs = Simulink.Bus.createMATLABStruct(buses,values) создает одну или несколько структур, использующих указанные значения.

пример

structs = Simulink.Bus.createMATLABStruct(buses,values,dims) создает одну или несколько структур, имеющих указанные размеры. Чтобы создать структуру для массива шин, включите dims аргумент.

structs = Simulink.Bus.createMATLABStruct(buses,values,dims,scope) создает одну или несколько структур в словаре данных, указанном scope.

Примеры

свернуть все

Открытие и моделирование модели ex_bus_initial_conditions.

open_system('ex_bus_initial_conditions')
sim('ex_bus_initial_conditions');

Создание структуры MATLAB с использованием объекта шины Top, какая модель ex_bus_initial_conditions нагрузки.

mStruct = Simulink.Bus.createMATLABStruct('Top');

Установка значения для поля mStruct структура, соответствующая элементу шины A1 шины A.

mStruct.A.A1 = 3;
mStruct.A
ans = 

  struct with fields:

    A1: 3
    A2: [5x1 int8]

Simulink устанавливает другие поля в структуре на базовые значения соответствующих элементов шины.

Вы можете использовать mStruct в качестве начальной структуры условий для блока «Единичная задержка».

Создание структуры MATLAB для шины, сигнальные элементы которой используют тип данных, отличный от double. Используйте частичную структуру, чтобы указать значения инициализации для подмножества элементов. При создании частичной структуры сопоставьте типы данных полей с типами данных соответствующих элементов.

Открытие и моделирование модели ex_bus_initial_conditions.

open_system('ex_bus_initial_conditions')
sim('ex_bus_initial_conditions');

C1 сигнальный элемент, которым помечен блок Constant5 products использует тип данных int16.

Найдите дескриптор порта для порта блока Bus Creator, который создает Top сигнал шины.

ph = get_param('ex_bus_initial_conditions/TopBus','PortHandles');

Создайте частичную структуру, которая задает значения для подмножества элементов в сигнале шины, созданном TopBus блок. Установка значения C.C1 используйте типизированное выражение. Сопоставьте тип данных в выражении с типом данных сигнального элемента в модели (int16).

PartialstructForK = struct('B',3,'C',struct('C1',int16(5)));

Создайте полную структуру с помощью дескриптора порта (ph) для TopBus блок. Переопределить значения грунта для C.C1 и B элементы.

outPort = ph.Outport;
mStruct = Simulink.Bus.createMATLABStruct(outPort,PartialstructForK);

Область C.C1 в структуре вывода продолжает использовать тип данных int16.

Открытие и моделирование модели ex_bus_initial_conditions.

open_system('ex_bus_initial_conditions')
sim('ex_bus_initial_conditions');

Создание частичной структуры для подмножества элементов шины в шине, созданной TopBus блок.

PartialStructForK = struct('A',struct('A1',4),'B',3)
PartialStructForK = 

  struct with fields:

    A: [1x1 struct]
    B: 3

Создание структуры MATLAB с использованием объекта шины Topчастичная структура и размеры для результирующей структуры.

structFromBus = Simulink.Bus.createMATLABStruct...
     ('Top',PartialStructForK,[2 3])
structFromBus = 

  2x3 struct array with fields:

    A
    B
    C

Чтобы создать структуры инициализации для нескольких портов шины, укажите дескрипторы портов в качестве аргументов для Simulink.Bus.createMATLABStruct. Результирующий массив ячеек структур использует базовые значения.

Открытие и моделирование модели ex_two_outports_create_struct.

open_system('ex_two_outports_create_struct')
sim('ex_two_outports_create_struct');

Поиск дескрипторов портов для блоков Bus Creator Bus1 и Bus2.

ph_1 = get_param...
     ('ex_two_outports_create_struct/Bus Creator','PortHandles');
ph_2 = get_param...
     ('ex_two_outports_create_struct/Bus Creator1','PortHandles');

Создайте структуру MATLAB ® с помощью массива дескрипторов портов.

mStruct = Simulink.Bus.createMATLABStruct([ph_1.Outport ph_2.Outport])
mStruct =

  2x1 cell array

    {1x1 struct}
    {1x1 struct}

Создайте структуру MATLAB на основе порта, который подключается к сигналу шины. Используйте частичную структуру, чтобы задать значения для подмножества элементов шины в шине, которая подключается к порту.

Открытие и моделирование модели ex_bus_initial_conditions.

open_system('ex_bus_initial_conditions')
sim('ex_bus_initial_conditions');

Найдите дескриптор порта для порта блока Bus Creator, который создает Top сигнал шины. Outport ручка - это ручка, которая вам нужна.

ph = get_param('ex_bus_initial_conditions/TopBus','PortHandles')
ph = 

  struct with fields:

      Inport: [31.0023 43.0023 41.0023]
     Outport: 44.0023
      Enable: []
     Trigger: []
       State: []
       LConn: []
       RConn: []
    Ifaction: []
       Reset: []

Создайте частичную структуру для сигнала шины, созданного TopBus блок. Для задания значений подмножества элементов шины можно использовать частичную структуру.

PartialstructForK = struct('A',struct('A1',4),'B',3)
PartialstructForK = 

  struct with fields:

    A: [1x1 struct]
    B: 3

Элементы шины, представленные структурными полями Top.B и Top.A находятся на одном уровне в иерархии шин. Эту частичную структуру можно использовать для переопределения значений основания для B и A шинные сигнальные элементы.

При создании структуры из объекта шины или из порта шины можно использовать частичную структуру в качестве необязательного аргумента.

Создайте структуру MATLAB с помощью дескриптора порта (ph) для TopBus блок. Переопределить значения грунта для A.A1 и B элементы шины.

outPort = ph.Outport;
mStruct = Simulink.Bus.createMATLABStruct(outPort,PartialstructForK)
mStruct = 

  struct with fields:

    A: [1x1 struct]
    B: 3
    C: [1x1 struct]

Входные аргументы

свернуть все

Источник информации о шине, указанный как Bus имя объекта, дескриптор порта, массив ячеек Bus имена объектов или массив дескрипторов портов.

  • Если используется Bus имя объекта, затем Bus объект должен находиться в базовой рабочей области MATLAB или в словаре данных, используемом моделью. Тип данных для Bus имя объекта - char или string.

  • Если используется дескриптор порта, перед использованием этой функции модель должна успешно скомпилироваться. Тип данных для дескриптора порта: double.

  • Для массива шин нельзя использовать дескриптор порта.

  • Если вы используете dims аргумент, затем для buses аргумент, используйте Bus объект или массив ячеек Bus объекты.

Задание массива ячеек Bus имена объектов или массив дескрипторов портов создает несколько структур с одним Simulink.Bus.createMATLABStruct вызов и обеспечивает лучшую производительность, чем использование раздельного Simulink.Bus.createMATLABStruct вызывает для создания структур.

Пример: struct = Simulink.Bus.createMATLABStruct('BusObject')

Пример: structs = Simulink.Bus.createMATLABStruct({'BusObject','BusObject1'})

Пример: struct = Simulink.Bus.createMATLABStruct(portHandle)

Пример: structs = Simulink.Bus.createMATLABStruct([portHandle,portHandle1])

Типы данных: double | char | string | struct | cell

Значения для подмножества элементов в результирующей структуре, указанные как пустая матрица ([]), частичная структура или массив ячеек. Массив ячеек должен содержать частичную структуру или пустую матрицу для каждого указанного источника информации шины.

Сведения о создании частичных структур см. в разделе Создание частичных структур для инициализации.

Чтобы использовать базовые значения, используйте пустую матрицу.

Пример: struct = Simulink.Bus.createMATLABStruct('BusObject',PartialStruct)

Типы данных: struct | cell

Размеры результирующей структуры, указанные как вектор.

Каждый размерный элемент должен быть целым числом, большим или равным 1. При указании частичной структуры для values , каждый размерный элемент должен быть больше или равен соответствующему ему размерному элементу в частичной структуре.

Пример: struct = Simulink.Bus.createMATLABStruct('BusObject',PartialStruct,[2 3])

Пример: structs = Simulink.Bus.createMATLABStruct({'Bus','Bus1','Bus2'},{[],[],[]},{1,2,3})

Типы данных: double | cell

Словарь данных, указанный как Simulink.data.Dictionary объект. Перед использованием этого аргумента представляйте словарь с помощью Simulink.data.Dictionary с помощью, например, Simulink.data.dictionary.create или Simulink.data.dictionary.open функция.

Если scope пуст, функция использует базовую рабочую область MATLAB в качестве источника Bus объекты.

Пример: structs = Simulink.Bus.createMATLABStruct({'Bus','Bus1','Bus2'},{[],[],[]},{1,1,1},dataDictionaryObject)

Выходные аргументы

свернуть все

Структуры с той же иерархией сигналов и теми же атрибутами, что и шины, возвращаются в виде структуры MATLAB или массива ячеек структур MATLAB.

Размеры структуры зависят от заданных входных аргументов:

  • Если указать только buses аргумент, то размерность равна 1.

  • Если также указать values аргумент, то размеры соответствуют размерам values.

  • При указании dims аргумент, то размеры соответствуют размерам dims.

Совет

  • Если вы используете Simulink.Bus.createMATLABStruct функция многократно для одной и той же модели (например, в цикле в сценарии), можно повысить производительность, избегая нескольких компиляций модели. Для повышения скорости поместите модель в компиляцию перед многократным использованием функции. Например, чтобы поместить vdp в компиляции используйте следующую команду:

    vdp([],[],[],'compile')

    После создания структуры MATLAB завершите компиляцию с помощью следующей команды:

    vdp([],[],[],'term')
  • Редактор шины можно использовать для вызова Simulink.Bus.createMATLABStruct с использованием одного из следующих подходов:

    • Выберите пункт меню Файл > Создать структуру MATLAB.

    • Выберите Bus для которого требуется создать полную структуру MATLAB. Затем на панели инструментов нажмите кнопку Создать структуру MATLAB.

    Затем можно отредактировать структуру MATLAB в редакторе MATLAB и проанализировать код для создания или обновления значений в этой структуре.

  • Вы можете использовать Simulink.Bus.createMATLABStruct для указания начального значения выходных данных ссылочной модели. Дополнительные сведения см. в разделе «Ссылочная модель: Установка начального значения для вывода шины» примера «Подробный рабочий процесс для управления данными со ссылкой на модель».

Представлен в R2010a