我希望每行中的搜索索引最大值/秒。如果row有多个最大值,那么我想保存两个索引。
例如:
X = [5 6 8
1 2 3
4 4 0];
我需要索引
inds = [1 3
2 3
3 1
3 2];
我想使用函数max
,但此函数只保存一个索引。
答案 0 :(得分:3)
您可以使用max
计算每行的最大值,然后使用max
和bsxfun
将每行中的元素与行eq
进行比较。然后,您可以找到这些最大值的行/列位置。我们在那里使用转置(.'
)以确保我们得到您期望的输出的顺序。
[c,r] = find(bsxfun(@eq, d, max(d, [], 2)).')
output = [r,c];
答案 1 :(得分:0)
另一种方法是使用max
和repmat
。
首先,使用
rowMaximum=max(X,[],2);
然后复制最大值,使其与输入具有相同的尺寸,并将其与输入
进行比较logicalMaximum=repmat(rowMaximum,1,size(X,2))==X;
你要做的最后一件事就是将这个逻辑阵列转换成你想要的索引
[columns,rows]=find(logicalMaximum);
result=[rows,columns];