Simulink. Bus.createMATLABStruct

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

Синтаксис

structFromBus = Simulink.Bus.createMATLABStruct(busSource)
structFromBus = Simulink.Bus.createMATLABStruct(busSource,partialValues)
structFromBus = Simulink.Bus.createMATLABStruct(busSource,partialValues,dims)
structsForBuses = Simulink.Bus.createMATLABStruct(portHandles)
structsForBuses = Simulink.Bus.createMATLABStruct(portHandles,partialStructures)
structsForBuses = Simulink.Bus.createMATLABStruct(busObjectNames)

Описание

пример

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.

model = fullfile(matlabroot,'examples','simulink','ex_bus_initial_conditions');
open_system(model);
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. Замените наземные значения для элементов B и C.C1.

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

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

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

model = fullfile(matlabroot,'examples','simulink','ex_bus_initial_conditions');
open_system(model);
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.

model = fullfile(matlabroot,'examples','simulink','ex_bus_initial_conditions');
open_system(model);
sim('ex_bus_initial_conditions')

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

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

  struct with fields:

      Inport: [29.0024 31.0024 41.0024]
     Outport: 42.0024
      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

Для просмотра документации необходимо авторизоваться на сайте