gpt4 book ai didi

matlab - 矩阵中的前 n 行?

转载 作者:太空宇宙 更新时间:2023-11-03 19:51:38 25 4
gpt4 key购买 nike

我正在尝试找出执行此操作的最佳方法,最好是在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com