Simulink.Bus.createMATLABStruct

Пакет: Simulink. Шина

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

Описание

пример

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

пример

structFromBus = Simulink.Bus.createMATLABStruct(busSource,partialValues) создает структуру, которая использует заданные значения partialValues вместо соответствующих наземных значений сигнала шины.

пример

structFromBus = Simulink.Bus.createMATLABStruct(busSource,partialValues,dims) создает структуру, которая имеет заданные измерения. Чтобы создать структуру для массива шин, используйте dims.

пример

structsForBuses = Simulink.Bus.createMATLABStruct(portHandles) создает массив ячеек структур для портов сигнала шины, заданных с указателями порта. Получившийся массив ячеек структур использует наземные значения. Используйте этот синтаксис, чтобы создать структуры инициализации для нескольких входов шины. Этот синтаксис улучшает производительность по сравнению с использованием отдельного Simulink.Bus.createMATLABStruct вызовы, чтобы создать структуры.

structsForBuses = Simulink.Bus.createMATLABStruct(portHandles,partialStructures) создает массив ячеек структур, который использует заданные значения partialStructures вместо наземных значений.

structsForBuses = Simulink.Bus.createMATLABStruct(busObjectNames) создает массив ячеек структур на основе заданных объектов шины.

Примеры

свернуть все

Откройте и симулируйте модель 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: [43.0011 37.0011 45.0011]
     Outport: 40.0011
      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]

Входные параметры

свернуть все

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

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

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

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

  • Если вы используете указатель порта, то модель должна скомпилировать успешно, прежде чем вы будете использовать createMATLABStruct метод. Типом данных для указателя порта является double.

Пример: structFromBus = Simulink.Bus.createMATLABStruct('myBusObject')

Пример: structForPortHandle = Simulink.Bus.createMATLABStruct(port_handle_1)

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

Используйте пустой матричный [] когда вы используете dims аргумент и хочет использовать наземные значения во всех узлах в получившейся структуре.

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

Размерности получившейся структуры, заданной как вектор.

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

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

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

Указатели шины сигнализируют о портах, заданных как массив. Если вы используете partialStructures аргумент, затем количество указателей порта, которые вы задаете в portHandles должен совпасть с количеством частичных структур.

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

Частичные структуры, заданные как массив ячеек. Количество указателей порта, которые вы задаете в portHandles должен совпасть с количеством частичных структур.

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

Соедините шиной имена объектов, заданные как массив ячеек.

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

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

свернуть все

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

Размерности structFromBus зависьте от входных параметров:

  • Если вы задаете только busSource, затем размерность равняется 1.

  • Если вы также задаете partialValues, затем размерности совпадают с размерностями partialValues.

  • Если вы задаете dims аргумент, затем размерности совпадают с размерностями dims.

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

Размерности StructsForBuses зависьте от входных параметров:

  • Если вы задаете только portHandles, затем размерность равняется 1.

  • Если вы также задаете partialStructures, затем размерности совпадают с размерностями partialStructures.

Советы

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

    [sys,x0,str,ts] = vdp([],[],[],'compile')

    После того, как вы создаете структуру MATLAB, отключаете компиляцию. Например:

    vdp([],[],[],'term')
  • Можно использовать Редактор Шины, чтобы вызвать Simulink.Bus.createMATLABStruct функция. Используйте один из этих подходов:

    • Выберите пункт меню File> Create a MATLAB structure.

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

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

  • Можно использовать Simulink.Bus.createMATLABStruct функция, чтобы задать начальное значение выхода модели, на которую ссылаются. Для получения дополнительной информации смотрите раздел “Referenced Model: Setting Initial Value for Bus Output” Подробного Рабочего процесса для Данных об Управлении с примером Модели - ссылки.

Введен в R2010a