For Each

Обрабатывайте элементы или подрешетки входного сигнала или параметра маски независимо

  • Библиотека:
  • Порты и подсистемы

  • For Each block

Описание

Блок 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 для -1Simulink использует два перекрывающихся раздела 3 на 2 для обработки.

Для примера, использующей параметр Partition Offset, откройте модель slexForEachOverlapExample.

По умолчанию все разделы входного сигнала или параметра маски обрабатываются. Чтобы обработать подмножество разделов, введите количество разделов для обработки в качестве Number of iterations. В матричных примерах выше, если Partition Offset установлено на 0 (по умолчанию) и Number of iterations установлено на 2, только первые 2 строки или столбцы матрицы входа A обрабатываются.

Примечание

Только сигналы считаются одномерными в Simulink. Параметры маски строки или векторов-столбцов, в зависимости от их ориентации. Чтобы разбить вектор-строку, задайте размерность раздела как 2 (вдоль столбцов). Чтобы разбить вектор-столбец, задайте размерность раздела как 1 (вдоль строк).

Порты

Выход

расширить все

Индекс токового разбиения (начиная с нуля), возвращается как скаляр.

Зависимость

Выберите Show partition index output port для отображения этого порта.

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

Параметры

расширить все

Вход раздел»

Выберите каждый входной сигнал, который вы хотите разбить, и укажите соответствующие Partition Dimension, Partition Width и Partition offset параметры. Для получения дополнительной информации см. Inport страницы с описанием блоков.

Список входных портов, подключенных к блоку For Each Subsystem.

Выберите входные сигналы порта, соединенные с блоком For Each Subsystem, чтобы разбить их на подрешетки или элементы.

Зависимость

Выбор этого параметра включает параметры Partition Dimension, Partition Width и Partition offset для выбранного сигнала порта входа.

Программное использование

Параметры блоков: InputPartition
Тип: Вектор символов
Значения: 'off' | 'on'
По умолчанию: 'off'

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

1

Задайте размерность 1.

целое число

Задайте размерность. Минимальное значение 1.

Программное использование

Параметры блоков: InputPartitionDimension
Тип: Вектор символов
Значения: '1' | '<integer>'
По умолчанию: '1'

Задайте ширину каждого среза разбиения входного сигнала.

1

Ширина одного элемента.

целое число

Задайте ширину. Минимальное значение 1.

Программное использование

Параметры блоков: InputPartitionWidth
Тип: Вектор символов
Значения: '1' | '<integer>'
По умолчанию: '1'

Задайте смещение для каждого среза разбиения входного сигнала.

0

Нет смещения между срезами разбиения.

целое число

Задайте смещение раздела, где сумма ширины раздела и смещения раздела является положительным целым числом.

Для примера - Partition Width 3 и Partition Offset -2 указывает, что каждый 3-элементный срез перекрывает свои соседние срезы на 2 элемента; тогда как Partition Width 2 и Partition Offset 1 указывает, что существует зазор шириной 1 элемент между каждой парой соседних срезов шириной 2 элемента.

Программное использование

Параметры блоков: InputPartitionOffset
Тип: Вектор символов
Значения: '0' | '<integer>'
По умолчанию: '0'

Вкладка «Разбиение параметров»

Выберите каждый параметр маски для разбиения и укажите соответствующие параметры Partition Dimension и Partition Width. Параметры появляются в списке, только если вы добавили редактируемый параметр в маску родительской подсистемы For Each.

Список параметров маски для блока For Each Subsystem.

Выберите параметры маски для блока For Each Subsystem, который будет разделен на подрешетки или элементы.

прочь

Очистить параметры маски.

на

Выберите параметры маски для разбиения.

Зависимость

Выбор этого параметра включает параметры Partition Dimension и Partition Width для выбранного параметра маски.

Программное использование

Параметры блоков: SubsysMaskParameterPartition
Тип: Вектор символов
Значения: 'off' | 'on'
По умолчанию: 'off'

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

Программное использование

Параметры блоков: SubsysMaskParameterPartitionDimension
Тип: Вектор символов
Значения: '1' | '<integer>'
По умолчанию: '1'

Задайте ширину каждого среза раздела массива параметров маски.

Программное использование

Параметры блоков: SubsysMaskParameterPartitionWidth
Тип: Вектор символов
Значения: '1' | '<integer>'
По умолчанию: '1'

Выход конкатенации

Для каждого выходного порта задайте размерность, по которому можно стекать (конкатенировать) результаты For Each Subsystem блока. Для получения дополнительной информации см. Outport страницы с описанием блоков.

Список выходных портов, подключенных к блоку For Each Subsystem.

Задайте размерность, по которому можно стекать результаты блока For Each Subsystem.

1

Результаты стека в d 1 направлении. Если блок генерирует векторы-столбцы, процесс конкатенации результатов за один вектор-столбец. Если блок генерирует векторы-строки, процесс конкатенации результатов в матрице.

2

Результаты стека в d 2 направлении. Если блок генерирует векторы-строки, процесс конкатенации результатов в одну строку вектора. Если блок генерирует векторы-строки, процесс конкатенации результатов в матрице.

Программное использование

Параметры блоков: OutputConcatenationDimension
Тип: Вектор символов
Значения: '1' | '<integer>'
По умолчанию: '1'

Другие параметры

Управляйте отображением выхода порта для индекса разбиения.

прочь

Скрыть выходной порт.

на

Отобразите выходной порт на блоке.

Зависимость

Выбор этого параметра включает параметр Partition index output data type.

Программное использование

Параметры блоков: ShowIterationIndex
Тип: Вектор символов
Значения: 'off' | 'on'
По умолчанию: 'off'

Задайте тип данных индекса раздела для выходного порта

int32

Выберите 32-битное целое число со знаком.

double

Выберите double real.

Программное использование

Параметры блоков: IterationIndexDataType
Тип: Вектор символов
Значения: 'int32' | 'double'
По умолчанию: 'int32'

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

-1

Обработка всех срезов

целое число

Количество срезов для обработки

Для примера - Number of iterations 3 указывает, что необходимо обработать только первые 3 срезы.

Программное использование

Параметры блоков: SpecifiedNumIters
Тип: Вектор символов
Значения: '-1' | '<integer>'
По умолчанию: '-1'

Примеры моделей

Введенный в R2010a