【问题标题】:How to find indexes of k maximal values in a given NxN (symetric) matrix?如何在给定的 NxN(对称)矩阵中找到 k 个最大值的索引?
【发布时间】:2016-11-27 14:24:42
【问题描述】:

我有一个矩阵,它(在每个输入 (i,j) 中)表示 (i,j) 对的相关性。 我想要具有最大相关性的 k 对的索引。 有任何想法吗? 我的矩阵可能会变大,所以我正在寻找 matlabs 优雅的数组/矩阵命令 (如果有的话)

谢谢!

备注:如果这不是这个问题的正确位置,我会很感激获得另一个论坛的链接或在此论坛中对类似问题的答案

【问题讨论】:

标签: matlab


【解决方案1】:

这应该可以解决问题:

function [values,i,j] = maxi(A,n)
[a, linIdx] = sort(A(:),'descend');
values = a(1:n);
[i,j] = ind2sub(size(A),linIdx(1:n));

其中输入 A 是一个矩阵,n 是您想要返回的 (i,j) 对的数量。输出当然是 n 个最大值及其对应的索引。

我希望这会有所帮助。

注意:如果A包含很多零元素,考虑使用稀疏矩阵来减少计算时间。

【讨论】:

  • @user135172 :请注意,我改进了我之前提交的草率代码。这会更快,并且代码看起来更好。享受;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
  • 1970-01-01
  • 2021-11-10
  • 1970-01-01
  • 2018-08-29
相关资源
最近更新 更多