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) создает массив ячеек структур на основе заданных объектов шины.

Примеры

свернуть все

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

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

Создайте структуру MATLAB® с помощью объекта Top шины, который загружает модель busic_example.

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

  struct with fields:

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

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

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

  struct with fields:

    A1: 3
    A2: [5x1 int8]

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

Можно использовать mStruct в качестве начальной структуры условия для блока Unit Delay.

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

Откройте модель Simulink®.

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

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

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

ph = get_param('busic_example/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.

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

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

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

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

  struct with fields:

    A: [1x1 struct]
    B: 3

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

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

  2x3 struct array with fields:

    A
    B
    C

Закройте систему.

close_system('busic_example')

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

open_system(docpath(fullfile(docroot,'toolbox','simulink',...
'examples','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 = 

    [1x1 struct]
    [1x1 struct]

Закройте систему.

close_system('ex_two_outports_create_struct')

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

Откройте модель Simulink.

run([docroot '/toolbox/simulink/ug/examples/signals/busic_example.mdl']);
sim('busic_example')

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

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

      Inport: [143.0013 144.0013 145.0013]
     Outport: 34.0013
      Enable: []
     Trigger: []
       State: []
       LConn: []
       RConn: []
    Ifaction: []

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

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

    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 = 

    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, должно совпасть с количеством частичных структур.

Типы данных: ячейка

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

Типы данных: ячейка

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

свернуть все

Соедините шиной иерархию сигнала и атрибуты, возвращенные как структура 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. Используйте один из этих подходов:

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

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

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

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

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

Была ли эта тема полезной?