Документация Engee

Выбор

Выбирает заданные элементы из входного вектора, матрицы или многомерного массива.

Тип: Selector

Путь в библиотеке:

/Basic/Signal Routing/Selector

Описание

Блок Выбор извлекает выбранные элементы входного вектора, матрицы или многомерного массива на основе заданных индексов. Извлеченные сигналы могут быть сгруппированы иначе, чем входные сигналы.

В зависимости от значения параметра Число входных размерностей меняется таблица параметров индексирования. Каждая строка таблицы соответствует одному из входных измерений в Число входных размерностей. Входной сигнал должен иметь не более, чем определенное количество измерений, указанное как Число входных размерностей. Например, если Число входных размерностей равно , то сигнал будет интерпретироваться как -мерный. Например, если на входе ожидается скаляр (одномерный), но Число входных размерностей равно 2, то скаляр будет рассматриваться как двумерный. При конфигурации блока Выбор для операций с многомерными сигналами, значок блока изменяется.

Предположим, у нас есть массив чисел U, и мы хотим выбрать подмассив Y из U, используя некоторое числовое значение Idx1 в качестве индекса.

Пусть у нас есть массив U:

U = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Мы хотим выбрать подмассив Y размера 8 из U, начиная с элемента с индексом Idx1:

Idx1 = 3
Y = U[Idx1:Idx1+7]

Это означает, что мы выбираем элементы с индексами от 3 до 10 из U. Таким образом, Y будет содержать следующие значения:

Y = [3, 4, 5, 6, 7, 8, 9, 10]

Здесь Y является подмассивом U, начиная с третьего элемента и включая следующие 7 элементов после него. Idx1 определяет начальный индекс второго измерения, а Idx1+7 определяет конечный индекс второго измерения.

Блок Выбор использует поведение, аналогичное функции getindex в Julia (подробнее см. в Индексирование).

В группе параметров Index 1 приведены параметры для первого индекса. Количество групп параметров зависит от количества размерностей (значение параметра Число входных размерностей). Набор параметров для каждого индекса одинаковый, они отличаются только именем для программного использования (номер в конце имени означает номер индекса).

Порты

Выход

# Y — выходной сигнал
скаляр | вектор | матрица | многомерный массив

Details

Выходной сигнал, скомпонованный из выбранных и/или переупорядоченных элементов входного сигнала.

Типы данных

Float16, Float32, Float64, Int8, Int16, Int32, Int64, Int128, UInt8, UInt16, UInt32, UInt64, Uint128, Fixed, Bool

Поддержка комплексных чисел

Да

Вход

# U — входной сигнал
скаляр | вектор | матрица | многомерный массив

Details

Входной сигнал, из которого берутся элементы для выходного сигнала.

Типы данных

Float16, Float32, Float64, Int8, Int16, Int32, Int64, Int128, UInt8, UInt16, UInt32, UInt64, Uint128, Fixed, Bool

Поддержка комплексных чисел

Да

# IdxNind — порт для настройки N-ого индекса
скаляр | вектор | матрица

Details

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

Название порта зависит от того, к какому индексу он относится, и от значения параметра Режим индексации.

Если для параметра Режим индексации установлено значение Индексация с единицы, то индекс в названии порта — 1, если значение Индексация с нуля, то — 0.

Зависимости

Чтобы использовать внешний индексный порт, установите для параметра соответствующего индекса Index option значение Index vector (port), Starting index (port).

Типы данных

Float16, Float32, Float64, Int8, Int16, Int32, Int64, Int128, UInt8, UInt16, UInt32, UInt64, Uint128, Fixed

Поддержка комплексных чисел

Нет

Параметры

Параметры

# Число входных размерностей — количество обрабатываемых размерностей
Вещественное число

Details

Задает количество обрабатываемых размерностей ( ) входного сигнала.

Максимальное количество размерностей — 32.

Пример:

Входной вектор имеет одну размерность, но при этом необходимо представить его как двумерный массив. Допустим, имеется вектор с тремя элементами, который по умолчанию представлен как одномерный и имеет размерность (3,).

В таком случае блок использует функцию getindex с индексами FirstIndices и SecondIndices по сигнатуре getindex(U, FirstIndices, SecondIndices):

julia> getindex(a, [1,2], :)
2x1 Matrix{Int64}:
1
2

Вектор a содержит значения [1, 2, 3]. Используя функцию getindex с параметрами [1, 2] и :, блок выбирает элементы из вектора a по первому измерению с индексами 1 и 2, а по второму измерению использует все элементы (представленные символом :). Результатом будет матрица размера 2x1, содержащий элементы вектора a с индексами 1 и 2.

Значение по умолчанию

1

Имя для программного использования

NumberOfDimensions

Настраиваемый

Нет

Вычисляемый

Да

# Режим индексации — режим индексации
Индексация с нуля | Индексация с единицы

Details

Задает режим индексации:

  • Индексация с единицы — первый элемент входного вектора имеет индекс 1.

    Пример: если входной вектор содержит значения [0 5 10 20 50 100] и нужно выбрать элемент с индексом 3, то на выходе должно быть значение 10.

  • Индексация с нуля — первый элемент входного вектора имеет индекс 0.

    Пример: если входной вектор содержит значения [0 5 10 20 50 100] и нужно выбрать элемент с индексом 3, то на выходе должно быть значение 20.

Значения

Zero-based | One-based

Значение по умолчанию

One-based

Имя для программного использования

IndexMode

Настраиваемый

Нет

Вычисляемый

Нет

# Размер входного порта — ширина входного сигнала
Целое число

Details

Задайте ширину входного сигнала блока для одномерных сигналов. Введите −1, чтобы наследовать от управляющего блока.

При работе с вектор-строками (матрицы размера 1 на ) и вектор-столбцами (матрицы размера на 1) есть возможность устанавливать количество размерностей (значение параметра Число входных размерностей) равным 1. При этом нужно правильно установить значение параметра Размер входного порта. Выбирать элементы из таких массивов можно при помощи одного индекса.
Значение по умолчанию

-1

Имя для программного использования

InputPortWidth

Настраиваемый

Нет

Вычисляемый

Да

Дополнительные возможности

Генерация Си кода: Да