matlab - 矩阵中的前 n 行?

标签 matlab numpy octave

我正在尝试找出执行此操作的最佳方法,最好是在 Octave 中,但我会在紧要关头使用 NumPy。

假设我有一个 axb 矩阵 M。如果我想要任何给定列中最大值的行索引,[x, xi] = max(M) 将为我返回这些索引作为行向量。

例如,如果 M 是:

1  3  5 
2  9  1
7  2  4

以上将返回行向量[3 2 1]作为xi;每行的索引向量,其中包含该列的最大值。这很好。我想要这个行向量。

但是如果我想要前 n 个这样的行向量怎么办?

[编辑以更好地解释这一点]

对于上面的示例,第一个这样的向量将是上面的 [3, 2, 1],(每个给定列具有最高值的行的索引)。第二个这样的向量是 [2 1 3],(每列具有第二高值的行的索引)。

我可以迭代地完成它,但我的实际矩阵有数千行,所以这在计算上会非常昂贵。我找不到任何明显的矩阵效用函数来帮助我实现这一目标。有什么建议吗?

最佳答案

我假设您的意思是您想要矩阵中的 n 个最大值。在这种情况下,Get the indices of the n largest elements in a matrix几乎与此问题相同,除了 OP 想要整个矩阵的最大值,而不是单个最大值。这应该可以满足您的需求

n = 2;               % The depth to get
M = [ 1, 3, 5; ...
      2, 9, 1; ...
      7, 2, 4 ];     % The matrix to look at
[m, mi] = sort(M, 'descend');  % Sort the to access them
x = m(1:n, :)        % Get the values
xi = mi(1:n, :)      % and the indices

关于matlab - 矩阵中的前 n 行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17170522/

相关文章:

matlab - 如何让fimplicit3显示所有解决方案?

user-interface - 将 MATLAB 工作区变量显示为 GUI 函数

numpy - 为什么谷歌云计算引擎比 numpy.dot 操作规范较低的专用服务器慢 100 倍

python - 如何在较高排名的张量中找到第一个匹配张量的索引

matlab公式优化: Radial Basis Function

matlab - ismember 不为 NaN 工作

根据输入参数模拟掷骰子的Python函数 1) 骰子数量 2) 掷骰子数量

matlab - Octave 时间序列移动平均线

matlab - Octave:用于将绘图打印为 eps 的动态文件名

matlab - 如何在 MATLAB/Octave 中将相对目录路径解析为规范路径