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');

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');

Найдите, что указатели порта для Создателя Шины блокируют 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: [41.0016 29.0016 43.0016]
     Outport: 44.0016
      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 функция, чтобы задать начальное значение выхода модели, на которую ссылаются. Для получения дополнительной информации смотрите раздел “Referenced Model: Setting Initial Value for Bus Output” Подробного Рабочего процесса для Данных об Управлении с примером Модели - ссылки.

Введен в R2010a