Engee 文档

选择器

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

类型: Selector

图书馆中的路径:

/Basic/Signal Routing/Selector

资料描述

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

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

假设我们有一个数字数组 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 定义第二维的最终索引。

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

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

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

如果为参数 索引选项 值设置 索引向量(对话框)索引向量(端口) 该块的工作原理如下:如果任何轴上的索引被设置为标量,那么输出信号将具有缺少此轴的维度。 例如,输入信号具有大小 (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。

复数支持

参数

参数

# 输入维数 — 已处理尺寸数
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

可调谐

可计算

# 索引模式 — 索引模式
零基 | 单基

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

可调谐

可计算

# 输入口尺寸 — 输入信号的宽度
Integer

Details

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

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

-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

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

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

索引设置可用:

  • 全部选择 -根据指定的索引选择所有索引 输入维数 尺寸。 不需要进一步的配置。

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

    julia> getindex([1, 2, 3, 4], :)
    4-element Vector{Int64}:
    1
    2
    3
    4
  • 索引向量(对话框) -启用参数 索引 . 输入元素索引的向量。 不支持可变大小的信号。 根据索引的传递(以标量的形式或向量的形式),它取决于这个维度是保留还是减少,这可能导致维度的不匹配。 它可以用符号表示 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
  • 索引向量(端口) -添加*IdxN*端口。 因此可以减小输出维度。

  • 起始索引(对话框) -包括参数 索引输出大小 . 在参数中输入要选择的项目范围的初始索引 索引 以及要在参数中选择的项数 输出大小 . 例如:

    号作为起始索引输入。 2,并将数字输入为大小 4. 因此,索引将在范围内 2:5:

    julia> getindex([1, 2, 3, 4, 5, 6], 2:5)
    4-element Vector{Int64}:
    2
    3
    4
    5
  • 起始索引(端口) -启用参数 输出大小 . 在参数中输入要选择的项目数 输出大小 . 添加*IdxN*端口。

  • 开始和结束索引(对话框) -启用参数(对话框) 索引 . 输入两个元素的向量 ],那么选择的索引将是范围内的索引 . 例如:

    输入两个元素的向量 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

如果参数 索引选项 等于 索引向量(对话框),输入您感兴趣的每个项目的索引。

如果参数 索引选项 等于 起始索引(对话框),输入要选择的项目范围的初始索引。

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

默认值

1

程序使用名称

IndexParamArray1

可调谐

可计算

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

Details

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

默认值

1

程序使用名称

OutputSizeArray1

可调谐

可计算

附加选项

C 代码生成: 是