matlab - 每行中最大值元素的索引(最后一个索引)

标签 matlab for-loop matrix max

我需要在 MATLAB 中找到矩阵中每一行中最大元素的索引。 有点像

[~,indexes] = maxValues = max(p_y_x,[],2);

工作正常,但我需要获取最后一个索引(当有多个索引具有最大值时)。 现在我有这样的东西:

N=size(p_y_x,1);
maxValues = max(p_y_x,[],2);
indexes=zeros(1,N);

for n=1:N
   indexes(n)=find(p_y_x(n,:)==maxValues(n),1,'last');
end

这很复杂而且效率不高(因为 for 循环)。

我怀疑必须以这种方式完成一些微不足道的事情。有没有更优的方案?

最佳答案

如果水平翻转数组然后更正索引,则查找第一次出现的相同代码适用于最后一次出现:

[~, indexes] = max(fliplr(p_y_x),[],2);
indexes = size(p_y_x,2)-indexes+1;

关于matlab - 每行中最大值元素的索引(最后一个索引),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36238633/

相关文章:

python - 嵌套在 dict 函数中的漂亮 for 循环 : how does that work?

matlab - 如何选择面积最大的物体?

matlab - 在 Matlab 中调整误差条宽度

matlab - 在 Matlab 中寻找带有噪声数据的近似局部最大值

python - Python 中用于计算的内循环和用于保存结果的外循环

C 编程 - For 循环

c++ - 如何修改openCV中的部分多维矩阵?

matlab - 在 MATLAB 中置换矩阵的列

matlab向量运算(vector + vector(by element))

python - MATLAB 或 Python 中的卡通风格绘图?