# mink


计算数组的 k 个最小元素。

函数库: TyBase

# 语法

B = mink(A,k)
B = mink(A,k,dims)
B = mink(___;comparisonmethod = "auto", nargout = 1)
B,I = mink(___;nargout = 2)

# 说明

B = mink(A,k) 返回 A 的 k 个最小元素。示例

  • 如果 A 是向量,则 mink 返回一个向量,其中包含 A 的 k 个最小元素;

  • 如果 A 是矩阵,则 mink 返回一个矩阵,该矩阵的列包含 A 的每一列中的 k 个最小元素;

  • 如果 A 是多维数组,则 mink 返回大小不等于 1 的第一个维度上的 k 个最小元素。


B = mink(A,k,dim) 确定 A 在维度 dim 上的 k 个最小元素。示例


B = mink(___;comparisonmethod = "auto", nargout = 1) 为上述任何语法指定如何比较 A 的元素,此项为可选项。例如,mink(A,k,"abs") 根据绝对值返回 A 的 k 个最小元素。示例


B,I = mink(___;nargout = 2) 计算 A 的 k 个最小值的索引,并在 I 中返回这些索引。示例

# 示例

最小向量元素
计算向量的 3 个最小元素。
using TyBase
A = 1:10;
B = TyBase.mink(A,3)
3-element Vector{Int64}: 
   1 
   2 
   3
矩阵行的最小元素
计算矩阵中每一行的 3 个最小元素。
using TyBase
using TyMath
A = magic(5)
5×5 Matrix{Int64}:
 17  24   1   8  15
 23   5   7  14  16
  4   6  13  20  22
 10  12  19  21   3
 11  18  25   2   9
B = TyBase.mink(A,3,2)
5×3 Matrix{Int64}:
 1   8  15
 5   7  14
 4   6  13
 3  10  12
 2   9  11
复数向量
根据模计算复数向量的 2 个最小元素,并返回它们在输入向量中的位置的索引。
using TyBase
A = [2-2im 5+im -7-3im -1+im]
1×4 Matrix{Complex{Int64}}:
 2-2im  5+1im  -7-3im  -1+1im
B,I = TyBase.mink(A,2,comparisonmethod="abs";nargout=2)
B = 2-element Vector{Complex{Int64}}:
   -1 + 1im
    2 - 2im
I = 2-element view(::Vector{Int64}, 1:2) with eltype Int64:
 4
 1

# 输入参数

A - 输入数组
向量 | 矩阵 | 多维数组
输入数组,指定为向量、矩阵或多维数组。
  • 如果 A 是向量,则 mink 返回一个向量,其中包含 A 的 k 个最小元素;

  • 如果 A 是矩阵,则 mink 返回一个矩阵,该矩阵的列包含 A 的每一列中的 k 个最小元素;

  • 如果 A 是多维数组,则 mink 返回大小不等于 1 的第一个维度上的 k 个最小元素。

数据类型: Float32 | Float64 | Int8 | Int16 | Int32 | Int64 | Int128 | UInt8 | UInt16 | UInt32 | UInt64 | UInt128 | Bool

复数支持:

k - 最小值的个数
非负整数

要返回的最小值的个数,指定为非负整数。

数据类型: Integer

dim - 运算维度
正整数

运算维度,指定为正整数。如果未指定值,则默认值是大小不等于 1 的第一个数组维度。

以一个 m×n 输入矩阵 A 为例:

  • mink(A,k,1) 计算 A 的每列中的 k 个最小值,并返回一个 k×n 矩阵;
  • mink(A,k,2) 计算 A 的每行中的 k 个最小值,并返回一个 m×k 矩阵。

数据类型: Integer

comparisonmethod - 比较方法
"auto" (默认) | "real" | "abs"

比较方法,指定为以下选项之一:

  • "auto" - 当 A 为实数时,按 real(A) 对输入 A 的元素进行比较;当 A 为复数时,按 abs(A) 进行比较;

  • "real" - 当 A 为实数或复数时,按 real(A) 对输入 A 的元素进行比较。如果 A 包含具有相等实部的元素,则使用 imag(A) 进行排序;

  • "abs" - 当 A 为实数或复数时,按 abs(A) 对输入 A 的元素进行比较。如果 A 包含具有相等模的元素,则使用区间 (-π,π] 中的 angle(A) 进行排序。

数据类型: String

nargout - 控制输出参数
Int

nargout 控制输出参数的个数。

数据类型: Int

# 输出参数

B - 输出数组
标量 | 向量 | 矩阵 | 多维数组

输出数组,以标量、向量、矩阵或多维数组形式返回。mink 按照从小到大的顺序返回 k 个元素。

I - 索引数组
标量 | 向量 | 矩阵 | 多维数组

索引数组,以向量、矩阵或多维数组形式返回。I 的大小与 B 相同。

# 另请参阅

maxk | ty_minimum | topkrows