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

Selector

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

selector

Описание

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

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

В настоящий момент поддерживается обработка не более чем двух размерностей, т.е. корректными значениями для параметра Number of input dimensions являются 1 и 2.

Например, сигнал будет восприниматься как матрица 1x1.

Предположим, у нас есть массив чисел 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 определяет конечный индекс второго измерения.

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

Порты

Вход

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

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

Типы данных: Float16, Float32, Float64, Int8, Int16, Int32, Int64, Int128, UInt8, UInt16, UInt32, UInt64, Uint128, Fixed, Bool

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

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

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

Зависимости

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

Типы данных: Float16, Float32, Float64, Int8, Int16, Int32, Int64, Int128, UInt8, UInt16, UInt32, UInt64, Uint128, Fixed

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

Выход

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

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

Типы данных: Float16, Float32, Float64, Int8, Int16, Int32, Int64, Int128, UInt8, UInt16, UInt32, UInt64, Uint128, Fixed, Bool

Параметры

Number of input dimensions — количество обрабатываемых размерностей
1 (по умолчанию) | целое число

Указанное количество обрабатываемых размерностей (N). Блок настраивает количество размерностей равное указанному в Number of input dimensions.

Если на вход будет подан скаляр, а значение Number of input dimensions равно 2, то блок будет рассчитывать две размерности.
Программное использование

Параметр блока

NumberOfDimensions

Значение

Integer

По умолчанию

1


Пример:

Входной вектор имеет одну размерность, но при этом необходимо представить его как двумерный массив. Допустим, имеется вектор с тремя элементами, который по умолчанию представлен как одномерный и имеет размерность (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.

First index

Index option — метод индексации первой размерности входного сигнала
Index vector (dialog)(по умолчанию) | Select all | Index vector (port) | Starting index (dialog) | Starting index (port) | Starting and ending indices (dialog)

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

Редуцировать размерность выхода можно только в режимах Index vector (dialog) и Index vector (port). Это происходит тогда, когда индекс задается числом. Во всех остальных случаях настраиваемая размерность сохраняется.
Блок считает, что у входного сигнала количество размерностей равно значению параметра Number of input dimensions, поэтому выходное значение в большинстве случаев (если размерность не редуцировалалась через режим Index vector и индекс задан скаляром) будет иметь число размерностей, равное числу в параметре Number of input dimensions.

Доступны настройки индексов:

  • Select all — выбирает все индексы по указанной в Number of input dimensions размерности. Дальнейшая настройка не требуется.

    Может быть представлен в нотации getindex. Выбор всех элементов по какой-либо оси осуществляется с помощью двоеточия без указания начального и конечного индекса : (см. пример выше). Например:

    julia> getindex([1, 2, 3, 4], :)
    4-element Vector{Int64}:
    1
    2
    3
    4
  • Index vector (dialog) — включает параметр Index. Введите вектор индексов элементов. Сигналы переменного размера не поддерживаются. В зависимости от передачи индексов (в виде скаляра или в виде вектора) зависит, сохраняется данная размерность или редуцируется, что может вызвать несоответствие размерностей. Может быть представлен в нотации getindex. Рассмотрим два примера:

    • Когда размерность сохраняется — вводится вектор индексов (даже если индекс один):

      julia> getindex([11 12; 21 22], [1], :)
      1x2 Matrix{Int64}:
      11 12 #в результате получается матрица размера (1,2)
    • Когда размерность редуцируется — индекс вводится как скаляр:

      julia> getindex([11 12; 21 22], 1, :)
      2-element Vector{Int64};
      11
      12
  • Index vector (port) — добавляет порт IdxN. Возможно редуцировать размерность выхода.

  • Starting index (dialog) — включает параметры Index и Output size. Введите начальный индекс диапазона элементов для выбора в параметре Index и количество элементов для выбора в параметре Output size. Например:

    В качестве стартового индекса вводится число 2, а в качестве размера вводится число 4. В результате индексы будут лежать в диапазоне 2:5:

    julia> getindex([1, 2, 3, 4, 5, 6], 2:5)
    4-element Vector{Int64}:
    2
    3
    4
    5
  • Starting index (port) — включает параметр Output size. Введите количество элементов, которые необходимо выбрать в параметре Output size. Добавляет порт IdxN.

  • Starting and ending indices (dialog) — включает параметр (диалоговое окно) Index. Введите вектор из двух элементов ], тогда выбранные индексы будут индексами из диапазона . Например:

    Введите вектор из двух элементов 2 и 4, что соответствует тому, что индексы будут взяты из диапазона 2:4:

    julia> getindex([1, 2, 3, 4, 5, 6], 2:4)
    3-element Vector{Int64}:
    2
    3
    4

Пример:

julia> a = [11 12; 21 22]
2x2 Matrix{Int64]:
11 12
21 22

Выберем подмассив из массива a, который включает в себя строки с индексами от 1 до 1 (первая строка) и столбцы с индексами от 2 до 2 (второй столбец).

Результатом будет подмассив размером 1x1, содержащий единственный элемент, расположенный в первой строке и втором столбце исходного массива a. В данном случае этот элемент равен 12:

julia> getindex(a, 1:1, 2:2)
1x1 Matrix{Int64]:
12
Программное использование

Параметр блока

IndexOptionArray1

Значение

Index vector (dialog) | Select all | Index vector (port) | Starting index (dialog) | Starting index (port) | Starting and ending indices (dialog)

По умолчанию

Index vector (dialog)

Index — индекс элементов
1 (по умолчанию) | целое число

Если параметр Index Option равен Index vector (dialog), введите индекс каждого интересующего вас элемента.

Если параметр Index Option равен Starting index (dialog), введите начальный индекс диапазона элементов, которые необходимо выбрать.

Введите в нужном порядке индексы всех элементов входного сигнала, которые должны присутствовать в выходном сигнале.

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

Параметр блока

IndexParamArray1

Значение

скаляр | вектор | матрица

По умолчанию

1

Output size — ширина выходного сигнала блока
1 (по умолчанию) | целое число

Задает ширину выходного сигнала блока.

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

Параметр блока

OutputSizeArray1

Значение

скаляр

По умолчанию

1

Second index

Index option — метод индексации первой размерности входного сигнала
Index vector (dialog)(по умолчанию) | Select all | Index vector (port) | Starting index (dialog) | Starting index (port) | Starting and ending indices (dialog)

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

Редуцировать размерность выхода можно только в режимах Index vector (dialog) и Index vector (port). Это происходит тогда, когда индекс задается числом. Во всех остальных случаях настраиваемая размерность сохраняется.
Блок считает, что у входного сигнала количество размерностей равно значению параметра Number of input dimensions, поэтому выходное значение в большинстве случаев (если размерность не редуцировалалась через режим Index vector и индекс задан скаляром) будет иметь число размерностей, равное числу в параметре Number of input dimensions.

Доступны настройки индексов:

  • Select all — выбирает все индексы по указанной в Number of input dimensions размерности. Дальнейшая настройка не требуется.

    Может быть представлен в нотации getindex. Выбор всех элементов по какой-либо оси осуществляется с помощью двоеточия без указания начального и конечного индекса : (см. пример выше). Например:

    julia> getindex([1, 2, 3, 4], :)
    4-element Vector{Int64}:
    1
    2
    3
    4
  • Index vector (dialog) — включает параметр Index. Введите вектор индексов элементов. Сигналы переменного размера не поддерживаются. В зависимости от передачи индексов (в виде скаляра или в виде вектора) зависит, сохраняется данная размерность или редуцируется, что может вызвать несоответствие размерностей. Может быть представлен в нотации getindex. Рассмотрим два примера:

    • Когда размерность сохраняется — вводится вектор индексов (даже если индекс один):

      julia> getindex([11 12; 21 22], [1], :)
      1x2 Matrix{Int64}:
      11 12 #в результате получается матрица размера (1,2)
    • Когда размерность редуцируется — индекс вводится как скаляр:

      julia> getindex([11 12; 21 22], 1, :)
      2-element Vector{Int64};
      11
      12
  • Index vector (port) — добавляет порт IdxN. Возможно редуцировать размерность выхода.

  • Starting index (dialog) — включает параметры Index и Output size. Введите начальный индекс диапазона элементов для выбора в параметре Index и количество элементов для выбора в параметре Output size. Например:

    В качестве стартового индекса вводится число 2, а в качестве размера вводится число 4. В результате индексы будут лежать в диапазоне 2:5:

    julia> getindex([1, 2, 3, 4, 5, 6], 2:5)
    4-element Vector{Int64}:
    2
    3
    4
    5
  • Starting index (port) — включает параметр Output size. Введите количество элементов, которые необходимо выбрать в параметре Output size. Добавляет порт IdxN.

  • Starting and ending indices (dialog) — включает параметр (диалоговое окно) Index. Введите вектор из двух элементов ], тогда выбранные индексы будут индексами из диапазона . Например:

    Введите вектор из двух элементов 2 и 4, что соответствует тому, что индексы будут взяты из диапазона 2:4:

    julia> getindex([1, 2, 3, 4, 5, 6], 2:4)
    3-element Vector{Int64}:
    2
    3
    4

Пример:

julia> a = [11 12; 21 22]
2x2 Matrix{Int64]:
11 12
21 22

Выберем подмассив из массива a, который включает в себя строки с индексами от 1 до 1 (первая строка) и столбцы с индексами от 2 до 2 (второй столбец).

Результатом будет подмассив размером 1x1, содержащий единственный элемент, расположенный в первой строке и втором столбце исходного массива a. В данном случае этот элемент равен 12:

julia> getindex(a, 1:1, 2:2)
1x1 Matrix{Int64]:
12
Программное использование

Параметр блока

IndexOptionArray1

Значение

Index vector (dialog) | Select all | Index vector (port) | Starting index (dialog) | Starting index (port) | Starting and ending indices (dialog)

По умолчанию

Index vector (dialog)

Index — индекс элементов
1 (по умолчанию) | целое число

Если параметр Index Option равен Index vector (dialog), введите индекс каждого интересующего вас элемента.

Если параметр Index Option равен Starting index (dialog), введите начальный индекс диапазона элементов, которые необходимо выбрать.

Введите в нужном порядке индексы всех элементов входного сигнала, которые должны присутствовать в выходном сигнале.

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

Параметр блока

IndexParamArray1

Значение

скаляр | вектор | матрица

По умолчанию

1

Output size — ширина выходного сигнала блока
1 (по умолчанию) | целое число

Задает ширину выходного сигнала блока.

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

Параметр блока

OutputSizeArray1

Значение

скаляр

По умолчанию

1

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

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