Если ваша модель содержит блоки с основными массивами компонентов, вы можете хотеть получить доступ к членам отдельного массива, например, поставить их цели рабочей точки или построить регистрируемые данные моделирования для определенных узлов. Вы делаете это при помощи интерфейса командной строки, чтобы индексировать в массив компонентов и создать путь к узлу регистрации данных или цели рабочей точки конкретного члена.
Следующие правила применяются:
Доступ к членам массивов при помощи методов индексирования матриц MATLAB®. Для получения дополнительной информации смотрите Индексацию массива.
Доступ к скалярным элементам обычным контуром (разграниченный точкой или разграниченный наклонной чертой) индексация.
Индекс пути не может пересечь нескалярный элемент.
Индексация пути не может быть объединена с индексированием матриц.
Последние два правила означают, что вы можете должны быть создать путь на нескольких шагах путем определения промежуточных переменных, как показано в этих примерах.
Если ваша модель содержит блоки с основными массивами компонентов, можно использовать или Инспектора Проводника или Данных моделирования Результатов Simscape™, чтобы просмотреть регистрируемые данные моделирования для членов отдельного массива. Для получения дополнительной информации смотрите Регистрацию данных для Массивов Компонента.
Можно также использовать интерфейс командной строки, чтобы индексировать в массив компонентов, например, построить регистрируемые данные моделирования для конкретного члена массивов.
Предположим, что у вас есть модель, CompArrayExample, это содержит подсистему, BatteryPack, и в нем блок, названный ResistorArray, с основным массивом resistor компоненты. Вы хотите построить ток через второй резистор в массиве.
На рисунке Проводник Результатов Simscape показывает регистрируемую древовидную структуру данных моделирования (на левой панели) и график тока, i, через второй резистор (на правой панели).

Для программируемого доступа к тому же узлу необходимо создать путь к индексации использующего узла. Поскольку индекс пути не может пересечь массив, сначала создайте путь к массиву резистора при помощи точечной индексации:
r = simlog.BatteryPack.ResistorArray.resistor
r =
1×5 Node array with properties:
id
savable
exportableЗатем используйте индексирование матриц, чтобы получить доступ к второму компоненту массива:
r2 = r(2)
r2 =
Node with properties:
id: 'resistor'
savable: 1
exportable: 0
p: [1×1 simscape.logging.Node]
i: [1×1 simscape.logging.Node]
v: [1×1 simscape.logging.Node]
n: [1×1 simscape.logging.Node]Наконец, используйте точечную индексацию снова, чтобы получить доступ к узлу для тока, i, через второй резистор:
i = r2.i
i =
Node with properties:
id: 'i'
savable: 1
exportable: 0
series: [1×1 simscape.logging.Series]
Постройте узел:
plot(i)

Для модели, обсужденной в предыдущем примере, Строя Регистрируемые Данные моделирования для членов Массивов Компонента, получают и ставят цели рабочей точки для членов отдельного массива.
Создайте OperatingPoint возразите названному op от регистрируемых данных моделирования в 5 секунд после запуска симуляции:
op = simscape.op.create(simlog, 5)
op = OperatingPoint with children: OperatingPoints: ChildId Size ______________________ ____ 'AC Voltage Source' 1x1 'BatteryPack' 1x1 'Current Sensor' 1x1 'Electrical Reference' 1x1 -----------------------------
Поставить новую цель рабочей точки для напряжения, v, в положительном узле p из второго резистора в массиве выполните процедуру, похожую на ту, описанную в предыдущем примере, с помощью временных объектов, чтобы создать путь через дерево данных.
Во-первых, извлеките данные о рабочей точке для массива резисторов:
r = get(op, 'BatteryPack/ResistorArray/resistor')r =
1×5 OperatingPoint array with properties:
Identifier
ChildIds
Children
AttributesЗатем получите цель для напряжения. Используйте индексирование матриц, чтобы получить доступ к второму компоненту массива и затем регулярной разграниченной наклонной чертой конструкции пути от того компонента до цели:
t = get(r(2), 'p/v')t =
Target with properties:
Description: 'Voltage'
Value: 2.8228e-12
Unit: 'V'
Priority: 'None'
Attributes: [2×1 containers.Map]Установите новое значение для цели:
t = t.Value = 2e-12
t =
Target with properties:
Description: 'Voltage'
Value: 2.0000e-12
Unit: 'V'
Priority: 'None'
Attributes: [2×1 containers.Map]Наконец, инвертируйте процесс, чтобы поставить новую цель в объекте рабочей точки для целой модели:
r(2) = set(r(2), 'p/v', t); op = set(op, 'BatteryPack/ResistorArray/resistor', r);
Инициализируйте модель от новой рабочей точки. Заметьте, что результаты симуляции изменились по сравнению с предыдущим примером.

simscape.op.OperatingPoint | simscape.op.Target