MATLAB 帮助中心
本页翻译不是最新的。点击此处可查看最新英文版本。
计算数组的 k 个最小元素
k
B = mink(A,k)
B = mink(A,k,dim)
B = mink(___,'ComparisonMethod',c)
[B,I] = mink(___)
B = mink(A,k) 返回 A 的 k 个最小元素。
B
A
如果 A 是向量,则 mink 返回一个向量,其中包含 A 的 k 个最小元素。
mink
如果 A 是矩阵,则 mink 返回一个矩阵,该矩阵的列包含 A 的每一列中的 k 个最小元素。
如果 A 是多维数组,则 mink 返回大小不等于 1 的第一个维度上的 k 个最小元素。
示例
B = mink(A,k,dim) 确定 A 在维度 dim 上的 k 个最小元素。
dim
B = mink(___,'ComparisonMethod',c) 为上述任何语法指定如何比较 A 的元素,此项为可选项。例如,mink(A,k,'ComparisonMethod','abs') 根据绝对值返回 A 的 k 个最小元素。
c
mink(A,k,'ComparisonMethod','abs')
[B,I] = mink(___) 计算 A 的 k 个最小值的索引,并在 I 中返回这些索引。
I
全部折叠
计算向量的 3 个最小元素。
A = 1:10; B = mink(A,3)
B = 1×3 1 2 3
计算矩阵中每一行的 3 个最小元素。
A = magic(5)
A = 5×5 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 = mink(A,3,2)
B = 5×3 1 8 15 5 7 14 4 6 13 3 10 12 2 9 11
根据模计算复数向量的 2 个最小元素,并返回它们在输入向量中的位置的索引。
A = [2-2i 5+i -7-3i -1+i]
A = 1×4 complex 2.0000 - 2.0000i 5.0000 + 1.0000i -7.0000 - 3.0000i -1.0000 + 1.0000i
[B,I] = mink(A,2,'ComparisonMethod','abs')
B = 1×2 complex -1.0000 + 1.0000i 2.0000 - 2.0000i
I = 1×2 4 1
输入数组,指定为向量、矩阵或多维数组。
如果 A 的类型为 categorical,则它必须是有序的。
categorical
数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | categorical | datetime | duration 复数支持: 是
single
double
int8
int16
int32
int64
uint8
uint16
uint32
uint64
logical
char
datetime
duration
要返回的最小值的个数,指定为正整数标量。如果 k 大于或等于运算维度中的元素数,则 mink 沿该维度对输入数组进行排序。
运算维度,指定为正整数标量。如果未指定值,则默认值是大小不等于 1 的第一个数组维度。
以一个 m×n 输入矩阵 A 为例:
m
n
mink(A,k,1) 计算 A 的每列中的 k 个最小值,并返回一个 k×n 矩阵。
mink(A,k,1)
mink(A,k,2) 计算 A 的每行中的 k 个最小值,并返回一个 m×k 矩阵。
mink(A,k,2)
'auto'
'real'
'abs'
比较方法,指定为以下选项之一:
'auto' - 当 A 为实数时,按 real(A) 对输入 A 的元素进行比较;当 A 为复数时,按 abs(A) 进行比较。
real(A)
abs(A)
'real' - 当 A 为实数或复数时,按 real(A) 对输入 A 的元素进行比较。如果 A 包含具有相等实部的元素,则使用 imag(A) 进行排序。
imag(A)
'abs' - 当 A 为实数或复数时,按 abs(A) 对输入 A 的元素进行比较。如果 A 包含具有相等模的元素,则使用区间 (-π,π] 中的 angle(A) 进行排序。
angle(A)
输出数组,以标量、向量、矩阵或多维数组形式返回。mink 按照从小到大的顺序返回 k 个元素。
索引数组,以向量、矩阵或多维数组形式返回。I 的大小与 B 相同。如果输出数组 B 包含重复的元素,则它们的索引在 I 中的顺序与它们在输入数组中的顺序一致。
全部展开
mink 函数完全支持 tall 数组。有关详细信息,请参阅 tall 数组。
用法说明和限制:
对于输入参量 A:
如果不指定维度,代码生成器将沿输入数组中具有可变大小或其大小不为 1 的第一个维度进行运算。如果此维度在代码生成时具有可变大小且在运行时为 1,则可能发生运行时错误。为避免此错误,请指定维度。
在生成的代码中,输入数组保持复数,即使其所有元素都具有零值虚部也是如此。在这些情况下,生成的代码产生的结果可能与 MATLAB 产生的结果不同。请参阅具有零值虚部的复数数据的代码生成 (MATLAB Coder)。
backgroundPool
ThreadPool
此函数完全支持基于线程的环境。有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
此函数完全支持分布式数组。有关详细信息,请参阅使用分布式数组运行 MATLAB 函数 (Parallel Computing Toolbox)。
当 k 至少为 512 且至少为运算维度长度的 8% 时,mink 函数改进了处理数值数据(包括复数数据)和逻辑数据的性能。
例如,以下代码返回一个包含 10,000 行的数值矩阵中每列的最小 5000 个元素。代码执行速度比上一版本大约快 3.75 倍。
function timingTest A = rand(1e4,10); for i = 1:120 M = mink(A,5000); end end
大致的执行时间是:
R2024b:1.05 秒
R2025a:0.28 秒
此代码是在运行 Windows® 11 的 AMD EPYC™ 74F3 24 核处理器 @ 3.19 GHz 测试系统上使用 timeit 函数计时的。
timeit
timeit(@timingTest)
min | topkrows | maxk
min
topkrows
maxk
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
欧洲
亚太
联系您当地的办事处