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 в качестве начальной структуры условия для блока Unit Delay.

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

Откройте и симулируйте ex_bus_initial_conditions модели.

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

The C1 сигнальный элемент, который маркирован блоком Constant5 использует тип данных 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 в структуру output продолжает использовать тип данных 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 сигнал шины. The 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')
  • Можно использовать Bus Editor, чтобы вызвать Simulink.Bus.createMATLABStruct функция при помощи одного из следующих подходов:

    • Выберите File > Create a MATLAB structure элемент меню.

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

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

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

Введенный в R2010a