exponenta event banner

Для каждого

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

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

  • For Each block

Описание

Блок For Each служит блоком управления для блока For Each Subsystem. В частности, блок Для каждого позволяет блокам в подсистеме Для каждого обрабатывать элементы либо входных сигналов, либо параметров маски независимо. Каждый блок в этой подсистеме, имеющий состояния, поддерживает отдельный набор состояний для каждого элемента или подчисток, которые он обрабатывает. Когда набор блоков в подсистеме обрабатывает элементы или подрешетки, подсистема объединяет результаты для формирования выходных сигналов.

Используйте подсистему Для каждого (For Each) для итеративного вычисления выходных данных после изменения входных параметров или параметров маски. Для этого настройте разделение входных сигналов или параметров маски в диалоговом окне «Для каждого блока».

Входные сигналы секционирования в подсистему

Чтобы указать входные сигналы для секционирования для каждой итерации в подсистеме Для каждой (For Each), используйте вкладку Входная секция (Input Partition) в диалоговом окне блока Для каждой (For Each). При указании сигнала, подлежащего секционированию, задайте параметры «Размер секции», «Ширина секции» и «Смещение секции».

Параметры маски секционирования подсистемы

Можно разделить параметры маски блока «Для каждой подсистемы». Секционирование полезно для систем, которые имеют идентичные структуры в каждой итерации, но разные значения параметров. В этом случае изменение модели на разбиение дополнительных входных сигналов для каждого параметра является громоздким. Вместо этого добавьте параметр маски в подсистему For Each. Дополнительные сведения см. в разделе Создание простой маски. Чтобы выбрать параметр маски для секционирования, используйте вкладку «Раздел параметров» диалогового окна «Для каждого блока». Дополнительные сведения см. в разделе Выбор параметров раздела ниже.

Вывод конкатената

Определите размер для конкатенации результатов, указав Размер конкатенации (Concatenation Dimension) на вкладке Выходная конкатенация (Output Concatenation).

Результаты, генерируемые блоком для каждого подмассива, складываются вдоль размера конкатенации. По умолчанию используется размер 1 (ось Y), что означает, что результаты складываются вертикально. Однако при задании размера конкатенации 2 результаты объединяются вдоль горизонтального направления (оси X). Таким образом, если процесс генерирует векторы строк, то конкатенированный результат является матрицей в первом случае и вектором строк во втором случае.

Выбор параметров секционирования

При выборе входного сигнала или параметра маски подсистемы для секционирования необходимо указать, как разложить его на элементы или субчипы для каждой итерации. Для этого задайте целочисленные значения параметров «Размер секции», «Ширина секции» и «Смещение секции».

В качестве иллюстрации рассмотрим матрицу входного сигнала A формы:

Метки d1 и d2 соответственно определяют размеры 1 и 2. При сохранении значения по умолчанию 1 как для размера секции, так и для ширины секции, и 0 для смещения секции, то Simulink ® срезает перпендикулярно размеру секции 1 с шириной, равной ширине секции, то есть одному элементу :

Матрица A разлагается на три вектора строк:

Если вместо этого указать 2 в качестве размера разбиения Simulink срезает перпендикулярно размеру 2, образуя три вектора столбцов:

В дополнение к заданию для измерения секционирования значения 2, если для параметра «Ширина секции» задано значение 2 и смещение секции в -1Simulink использует два перекрывающихся раздела 3 на 2 для обработки.

Для примера, используя параметр Смещения Разделения, откройте модель slexForEachOverlapExample.

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

Примечание

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

Порты

Продукция

развернуть все

Индекс текущей секции (начиная с нуля), возвращаемый как скаляр.

Зависимость

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

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

Параметры

развернуть все

Вкладка «Входной раздел»

Выберите каждый входной сигнал, который требуется разделить, и укажите соответствующие параметры «Размер раздела», «Ширина раздела» и «Смещение раздела». Дополнительные сведения см. на странице «Inport block reference».

Список входных портов, подключенных к блоку «Для каждой подсистемы».

Выберите входные сигналы портов, подключенные к блоку «Для каждой подсистемы», для разделения на подрешетки или элементы.

Зависимость

При выборе этого параметра для выбранного сигнала входного порта активируются параметры «Размер секции», «Ширина секции» и «Смещение секции».

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

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

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

1

Укажите размер 1.

целое число

Укажите размер. Минимальное значение 1.

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

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

Укажите ширину каждого раздела входного сигнала.

1

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

целое число

Укажите ширину. Минимальное значение 1.

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

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

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

0

Смещение между секциями отсутствует.

целое число

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

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

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

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

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

Выберите каждый параметр маски для секционирования и укажите соответствующие параметры «Размер секционирования» и «Ширина секционирования». Параметры появляются в списке только в том случае, если в маску родительской подсистемы «Для каждой» добавлен редактируемый параметр.

Список параметров маски для блока «Для каждой подсистемы».

Выберите параметры маски для блока «Для каждой подсистемы» для разбиения на субчипы или элементы.

прочь

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

на

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

Зависимость

Выбор этого параметра позволяет использовать параметры «Размер секции» и «Ширина секции» для выбранного параметра маски.

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

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

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

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

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

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

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

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

Вкладка «Конкатенация вывода»

Для каждого выходного порта укажите размер, вдоль которого следует объединить результаты блока «Для каждой подсистемы». Дополнительные сведения см. на странице ссылки на блок исходящего порта.

Список выходных портов, подключенных к блоку «Для каждой подсистемы».

Укажите размер, вдоль которого будут помещены результаты блока «Для каждой подсистемы».

1

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

2

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

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

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

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

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

прочь

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

на

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

Зависимость

При выборе этого параметра включается параметр выходного типа данных индекса секционирования.

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

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

Укажите тип данных индекса секции для выходного порта

int32

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

double

Выберите двойное вещественное значение.

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

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

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

-1

Обработать все фрагменты

целое число

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

Например, число итераций 3 указывает, что должны быть обработаны только первые 3 фрагмента.

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

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

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

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