Engee 文档

Selector

从输入向量、矩阵或多维数组中选择指定的元素。

类型: Selector

图书馆中的路径:

/Basic/Signal Routing/Selector

资料描述

Selector 根据指定的索引提取输入向量、矩阵或多维数组的选定元素。 提取的信号可以与输入信号不同地分组。

取决于参数值 Number of input dimensions 索引参数表正在更改。 表的每一行对应于 Number of input dimensions . 输入信号必须具有不超过一定数量的维度,指定为 Number of input dimensions . 例如,如果 Number of input dimensions 同样 ,那么信号将被解释为 -测量。 例如,如果在输入处期望标量(一维),但 Number of input dimensions 同样 2,那么标量将被视为二维。 配置块时 Selector 对于具有多维信号的操作,块图标会发生变化。

假设我们有一个数字数组 U,我们要选择一个子数组 YU 使用一些数值 Idx1 作为索引。

假设我们有一个数组 U:

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

我们要选择一个子数组 Y 大小 8U 从具有索引的元素开始 Idx1:

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

这意味着我们从 3 以前 10U. 因此, Y 它将包含以下值:

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

这里 Y 是子阵列 U 从第三个元素开始,包括以下内容 7 后的元素。 Idx1 定义第二维的初始索引,以及 Idx1+7 定义第二维的最终索引。

Selector 使用与函数类似的行为 getindex,getindex in*Julia*(有关更多信息,请参阅 Indexing).

在参数组中 Index 1 给出了第一个索引的参数。 参数组的数量取决于维度的数量(参数值 Number of input dimensions). 每个索引的参数集是相同的,它们仅在用于编程的名称上有所不同(名称末尾的数字表示索引号)。

在索引向量模式下使用索引

如果为参数 Index option 值设置 Index vector (dialog)Index vector (port) 该块的工作原理如下:如果任何轴上的索引被设置为标量,那么输出信号将具有缺少此轴的维度。 例如,输入信号具有大小 (a,b,c),沿轴 13 所有索引都选自 1 以前 a 和向上 c,并在轴 2 -只是索引 3 标量的形式。 然后输出信号将具有尺寸 (a,c). 如果在轴上 2 将索引指定为数组 — [3],那么输出信号将具有大小 (a,1,c). 也就是说,将索引设置为数组将可配置轴保存在最终维度中,将索引设置为标量将删除可配置轴。

让我们来看看输入信号的设置参数和尺寸的不同变体的示例。:

  1. 输入是大小的一维向量 (5,),索引作为标量给出 1 在这种情况下,输出是标量(即大小的信号 ()).

    selector 1

  2. 输入是大小的一维向量 (5,),索引设置为数组 [1] 在这种情况下,输出是大小的一维向量 (1,).

    selector 2

  3. 输入是大小的二维矩阵 [3, 3],两个索引都指定为数组 [1, 2][2] 在这种情况下,输出信号也是尺寸的二维矩阵 [2, 1].

    selector 3

  4. 输入是大小的二维矩阵 [3, 3],一个索引被指定为数组 [1, 2],而第二个是标量的形式 2 在这种情况下,输出信号比输入少一个维度,即 (2,).

    selector 4

  5. 输入是大小的二维矩阵 [3, 3],两个索引都作为标量给出 32 在这种情况下,输出是标量(即大小的信号 ()).

    selector 5

港口

输出

# 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。

复数支持

参数

参数

# Number of input dimensions — 已处理尺寸数
Real number

Details

设置要处理的维度数( )的输入信号。

最大尺寸数 — 32.

例子:

输入向量具有一维,但必须表示为二维数组。 假设有一个包含三个元素的向量,默认情况下,它们表示为一维并且具有维数 (3,).

在这种情况下,块使用函数 getindex,getindex 带索引 第一,第一第二部分 通过签名 getindex(U,FirstIndices,SecondIndices):

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

向量资料 a 包含值 [1, 2, 3]. 使用函数 getindex,getindex 带参数 [1, 2]:,块从向量中选择元素 a 根据带索引的第一维 12,并在第二维中使用所有元素(由符号表示 :). 结果将是大小的矩阵 2×1 包含向量的元素 a 带索引 12.

默认值

1

程序使用名称

NumberOfDimensions

可调谐

可计算

# Index mode — 索引模式
Zero-based | One-based

Details

设置索引模式:

  • One-based -输入向量的第一个元素具有索引 1.

    示例:如果输入向量包含值 [0 5 10 20 50 100] 并且需要选择带有索引的元素 3,那么输出应该具有值 10.

  • Zero-based -输入向量的第一个元素具有索引 0.

    示例:如果输入向量包含值 [0 5 10 20 50 100] 并且需要选择带有索引的元素 3,那么输出应该具有值 20.

Zero-based | One-based

默认值

One-based

程序使用名称

IndexMode

可调谐

可计算

# Input port size — 输入信号的宽度
Integer

Details

为一维信号设置块输入信号的宽度。 进入 −1 以从控制单元继承。

使用向量字符串(大小矩阵)时 )和向量列(大小的矩阵 )可以设置维度数(参数值 Number of input dimensions)等于 1. 在这种情况下,您需要正确设置参数值。 Input port size . 您可以使用单个索引从此类数组中选择元素。
默认值

-1

程序使用名称

InputPortWidth

可调谐

可计算

Index 1

# Index option — 对输入信号的第一维进行索引的方法
Select all | Index vector (dialog) | Index vector (port) | Starting index (dialog) | Starting index (port) | Starting and ending indices (dialog)

Details

由输入信号的维度决定如何索引信号的元素。

输出维度只能在以下模式下减小 Index vector (dialog)Index vector (port). 当索引设置为数字时会发生这种情况。 在所有其他情况下,将保留可配置维度。
块认为输入信号的维数等于参数的值 Number of input dimensions 因此,输出值在大多数情况下(如果维度没有通过模式减少 Index vector (dialog)Index vector (port) 并且索引由标量设置)将具有与参数中的数字相等的维数 Number of input dimensions .

索引设置可用:

  • Select all -根据指定的索引选择所有索引 Number of input dimensions 尺寸。 不需要进一步的配置。

    它可以用符号表示 getindex,getindex. 沿着任何轴的所有元素都使用冒号选择,而不指定开始和结束索引。 : (见上面的例子)。 例如:

    julia> getindex([1, 2, 3, 4], :)
    4-element Vector{Int64}:
    1
    2
    3
    4
  • Index vector (dialog) -启用参数 Index . 输入元素索引的向量。 不支持可变大小的信号。 根据索引的传递(以标量的形式或向量的形式),它取决于这个维度是保留还是减少,这可能导致维度的不匹配。 它可以用符号表示 getindex,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) -包括参数 IndexOutput 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 . 输入两个元素的向量 ],那么选择的索引将是范围内的索引 . 例如:

    输入两个元素的向量 24,这对应于索引将取自范围的事实 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 (第二列)。

结果将是大小的子数组 1×1,包含位于源阵列的第一行和第二列中的单个元素 a. 在这种情况下,此元素等于 12:

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

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

默认值

Index vector (dialog)

程序使用名称

IndexOptionArray1

可调谐

可计算

# Index — 元素的索引
Scalar / array of real numbers

Details

如果参数 Index option 等于 Index vector (dialog),输入您感兴趣的每个项目的索引。

如果参数 Index option 等于 Starting index (dialog),输入要选择的项目范围的初始索引。

按所需顺序输入应存在于输出信号中的输入信号的所有元素的索引。

默认值

1

程序使用名称

IndexParamArray1

可调谐

可计算

# Output size — 块输出信号的宽度
Scalar / array of real numbers

Details

设置块的输出信号的宽度。

默认值

1

程序使用名称

OutputSizeArray1

可调谐

可计算

附加选项

C 代码生成: 是