如何用matlab寻找数组前k个最大值

2025-10-08 00:18:46

1、比如我们有一个数组A。现在我们相求其最大三个值以及位置。

A(:)将数组处理降为一维。然后使用sort排序,并将排序结果转置(横着显示)

如何用matlab寻找数组前k个最大值

2、sort可以有两个返回值。如图将排序后列表放入AS,将元素原有位置放入pos。

如图知道最大三个元素在5,4,8位置。

如何用matlab寻找数组前k个最大值

3、我们回到原有数组A。其序号的含义解释如图,就是从最低维一层层排号。

5,4,8分别圈出。

如何用matlab寻找数组前k个最大值

4、使用A(位置列表)获取这些位置上的数。如图位置列表时[8,4,5]。获取了最大的三个数。

如何用matlab寻找数组前k个最大值

5、也可以全部用程序完成。使用length(A(:))计算数组A的元素个数。

sort之后,取出最后的3个,从len-2到len。

如何用matlab寻找数组前k个最大值

1、由于要获取最大的k个元素,等价于先获取最大元素,再从其余元素中获取最大k-1个元素.....一次递推下去,可以多次使用max完成。

由于max获取最大值的时间复杂度是n,而sort的时间复杂度不低于nlog(n),因此这种方法,如果k较小,可能快一些。

代码如图,获取最大元素后,将那个元素设置为-inf,接着循环往复k次。

如何用matlab寻找数组前k个最大值

2、从变量窗口中,我们可以看到运行完后,获得了最大的3个数,最大三个数的位置,和被修改后的临时数组。

如何用matlab寻找数组前k个最大值

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢