Выбор
Выбирает заданные элементы из входного вектора, матрицы или многомерного массива.
Тип: 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
Выходной сигнал, скомпонованный из выбранных и/или переупорядоченных элементов входного сигнала.
Типы данных |
|
Поддержка комплексных чисел |
Да |
Вход
#
U
—
входной сигнал
скаляр
| вектор
| матрица
| многомерный массив
Details
Входной сигнал, из которого берутся элементы для выходного сигнала.
Типы данных |
|
Поддержка комплексных чисел |
Да |
#
IdxNind
—
порт для настройки N-ого индекса
скаляр
| вектор
| матрица
Details
Внешний порт, указывающий индекс для выбора соответствующего выходного элемента. Дробные значения внутри блока округляются до целых.
Название порта зависит от того, к какому индексу он относится, и от значения параметра Режим индексации.
Если для параметра Режим индексации установлено значение Индексация с единицы
, то индекс в названии порта — 1
, если значение Индексация с нуля
, то — 0
.
Зависимости
Чтобы использовать внешний индексный порт, установите для параметра соответствующего индекса Index option значение Index vector (port)
, Starting index (port)
.
Типы данных |
|
Поддержка комплексных чисел |
Нет |
Параметры
Параметры
#
Число входных размерностей —
количество обрабатываемых размерностей
Вещественное число
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
.
Значение по умолчанию |
|
Имя для программного использования |
|
Настраиваемый |
Нет |
Вычисляемый |
Да |
#
Режим индексации —
режим индексации
Индексация с нуля
| Индексация с единицы
Details
Задает режим индексации:
-
Индексация с единицы
— первый элемент входного вектора имеет индекс1
.Пример: если входной вектор содержит значения
[0 5 10 20 50 100]
и нужно выбрать элемент с индексом3
, то на выходе должно быть значение10
. -
Индексация с нуля
— первый элемент входного вектора имеет индекс0
.Пример: если входной вектор содержит значения
[0 5 10 20 50 100]
и нужно выбрать элемент с индексом3
, то на выходе должно быть значение20
.
Значения |
|
Значение по умолчанию |
|
Имя для программного использования |
|
Настраиваемый |
Нет |
Вычисляемый |
Нет |
#
Размер входного порта —
ширина входного сигнала
Целое число
Details
Задайте ширину входного сигнала блока для одномерных сигналов. Введите −1
, чтобы наследовать от управляющего блока.
При работе с вектор-строками (матрицы размера 1 на ) и вектор-столбцами (матрицы размера на 1) есть возможность устанавливать количество размерностей (значение параметра Число входных размерностей) равным 1 . При этом нужно правильно установить значение параметра Размер входного порта. Выбирать элементы из таких массивов можно при помощи одного индекса.
|
Значение по умолчанию |
|
Имя для программного использования |
|
Настраиваемый |
Нет |
Вычисляемый |
Да |
Index 1
#
Index option —
метод индексации первой размерности входного сигнала
Select all
| Вектор номеров (поле ввода)
| Index vector (port)
| Начальный номер (поле ввода)
| Starting index (port)
| Начальный и конченый номера (поле ввода)
Details
Определяет по размерности входного сигнала, как элементы сигнала должны быть проиндексированы.
Редуцировать размерность выхода можно только в режимах Вектор номеров (поле ввода) и Index vector (port) . Это происходит тогда, когда индекс задается числом. Во всех остальных случаях настраиваемая размерность сохраняется.
|
Блок считает, что у входного сигнала количество размерностей равно значению параметра Число входных размерностей, поэтому выходное значение в большинстве случаев (если размерность не редуцировалалась через режимы Вектор номеров (поле ввода) и Index vector (port) и индекс задан скаляром) будет иметь число размерностей, равное числу в параметре Число входных размерностей.
|
Доступны настройки индексов:
-
Select all
— выбирает все индексы по указанной в Число входных размерностей размерности. Дальнейшая настройка не требуется.Может быть представлен в нотации
getindex
. Выбор всех элементов по какой-либо оси осуществляется с помощью двоеточия без указания начального и конечного индекса:
(см. пример выше). Например:julia> getindex([1, 2, 3, 4], :) 4-element Vector{Int64}: 1 2 3 4
-
Вектор номеров (поле ввода)
— включает параметр 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. Возможно редуцировать размерность выхода. -
Начальный номер (поле ввода)
— включает параметры 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. -
Начальный и конченый номера (поле ввода)
— включает параметр (диалоговое окно) 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
Значения |
|
Значение по умолчанию |
|
Имя для программного использования |
|
Настраиваемый |
Нет |
Вычисляемый |
Нет |
#
Index —
индекс элементов
Скаляр / массив вещественных чисел
Details
Если параметр Index option равен Вектор номеров (поле ввода)
, введите индекс каждого интересующего вас элемента.
Если параметр Index option равен Начальный номер (поле ввода)
, введите начальный индекс диапазона элементов, которые необходимо выбрать.
Введите в нужном порядке индексы всех элементов входного сигнала, которые должны присутствовать в выходном сигнале.
Значение по умолчанию |
|
Имя для программного использования |
|
Настраиваемый |
Нет |
Вычисляемый |
Да |
#
Output size —
ширина выходного сигнала блока
Скаляр / массив вещественных чисел
Details
Задает ширину выходного сигнала блока.
Значение по умолчанию |
|
Имя для программного использования |
|
Настраиваемый |
Нет |
Вычисляемый |
Да |
Примеры
-
Интеграция Julia кода в модели Engee с использованием блока Engee Function
-
Генерация кода для STM32 (Полношаговое управление шаговым двигателем)
-
Автомобильный радар на основе сигнала с многопозиционной частотной модуляцией (MFSK)
-
Быстрое прототипирование алгоритмов управления на КПМ РИТМ: шаговый двигатель