Обрабатывайте элементы или подрешетки входного сигнала или параметра маски независимо
Порты и подсистемы
Блок For Each служит блоком управления для блока For Each Subsystem. В частности, блок For Each позволяет блокам внутри подсистемы For Each обрабатывать элементы либо входных сигналов, либо маскировать параметры независимо. Каждый блок в этой подсистеме, который имеет состояния, поддерживает отдельный набор состояний для каждого элемента или подрешетки, который он обрабатывает. Когда набор блоков в подсистеме обрабатывает элементы или подрешетки, подсистема объединяет результаты, чтобы сформировать выходные сигналы.
Используйте подсистему For Each, чтобы итерационно вычислить выходы после изменения входов или маскировки. Для этого сконфигурируйте разбиение входных сигналов или параметров маски в диалоговом окне For Each блока.
Чтобы задать, какие входные сигналы для разделения для каждой итерации в подсистеме For Each, используйте вкладку Input Partition в диалоговом окне блока For Each. При указании сигнала, который будет разбит, задайте параметры Partition Dimension, Partition Width и Partition Offset.
Можно разбить параметры маски блока For Each Subsystem. Разбиение полезно для систем, которые имеют одинаковые структуры в каждой итерации, но различные значения параметров. В этом случае изменение модели на разбиение дополнительных входных сигналов для каждого параметра является громоздким. Вместо этого добавьте параметр маски в подсистему For Each. Для получения дополнительной информации см. раздел «Создание простой маски». Чтобы выбрать параметр маски для разбиения, используйте вкладку Parameter Partition диалогового окна For Each блока. Для получения дополнительной информации смотрите Select Partition Parameters, ниже.
Определите размерность, по которому можно объединить результаты путем определения Concatenation Dimension на вкладке Output Concatenation.
Результаты, сгенерированные блоком для каждой подрешетки, складываются по размерности конкатенации. По умолчанию используется размерность 1 (y ось), что означает, что результаты складываются вертикально. Однако, если вы задаете размерность конкатенации 2, результаты конкатенируются вдоль горизонтального направления (x оси). Таким образом, если процесс генерирует векторы-строки, то конкатенированный результат является матрицей в первом случае и векторе-строке во втором случае.
При выборе параметра маски входного сигнала или подсистемы для разбиения, необходимо задать, как разложить его на элементы или подрешетки для каждой итерации. Сделайте это, установив целочисленные значения для параметров Partition Dimension, Partition Width и Partition Offset.
В качестве иллюстрации рассмотрим матрицу входного сигнала A
формы:
Метки d 1 и d 2, соответственно, определяют размеры 1 и 2. Если вы сохраняете настройку по умолчанию 1
для размерности раздела и ширины раздела и 0
для смещения раздела, затем Simulink® срезы, перпендикулярные размерности 1 перегородки, при ширине, равной ширине перегородки, то есть один элемент:
Матрица А разлагается на эти три векторов-строк:
Если вместо этого вы задаете 2
когда разбиение размерности, Simulink срезов перпендикулярно размеру 2, образуя три векторов-столбцов:
В дополнение к установке Partition Dimension на 2
, если вы задаете Partition Width 2
и Partition Offset для -1
Simulink использует два перекрывающихся раздела 3 на 2 для обработки.
Для примера, использующей параметр Partition Offset, откройте модель slexForEachOverlapExample.
По умолчанию все разделы входного сигнала или параметра маски обрабатываются. Чтобы обработать подмножество разделов, введите количество разделов для обработки в качестве Number of iterations. В матричных примерах выше, если Partition Offset установлено на 0
(по умолчанию) и Number of iterations установлено на 2
, только первые 2 строки или столбцы матрицы входа A
обрабатываются.
Примечание
Только сигналы считаются одномерными в Simulink. Параметры маски строки или векторов-столбцов, в зависимости от их ориентации. Чтобы разбить вектор-строку, задайте размерность раздела как 2 (вдоль столбцов). Чтобы разбить вектор-столбец, задайте размерность раздела как 1 (вдоль строк).