matlab - 在 MATLAB 中查找矩阵子集的最大值,同时保留完整矩阵的索引

标签 matlab matrix indexing max subset

目前,我可以使用以下代码找到矩阵 C 的最大值及其索引:

[max_C, imax] = max(C(:));
[ypeak, xpeak] = ind2sub(size(C),imax(1));

让我们调用矩阵的一个子集 C_sub

我想找到 C_sub 的最大值,但我也想知道 C 中那个最大值的索引。

看起来这应该是一个简单的问题,但它难倒了我。

感谢您的帮助!

最佳答案

假设 C_sub 是由

C_sub = C(rows,cols);

其中 rowscols 是索引向量。将这些 rowscols 向量保存到可以重用的地方(如果您还没有的话)。

[max_C_sub, ind_C_sub] = max(C_sub(:));
[ypeak_sub, xpeak_sub] = ind2sub(size(C_sub), ind_C_sub);
xpeak = cols(xpeak_sub);
ypeak = rows(ypeak_sub);

或者如果 rows 和/或 cols 是逻辑向量而不是索引向量,您可以使用 find 转换它们,然后按上述步骤进行。

rows_ind = find(rows_logical);

关于matlab - 在 MATLAB 中查找矩阵子集的最大值,同时保留完整矩阵的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4833326/

相关文章:

c++ - 知道其公共(public) ID 的拆分数据

c++ - 从 Scilab 迁移到 C++

matlab - 如何对矩阵中每一行的每 n 列进行平均?

c - C中矩阵实现之间的差异

indexing - “logstash-”是kibana中索引的必需前缀吗?

mysql - 分类字段是否需要索引? (MySQL 或 MongoDB)

Python:根据匹配插入字典中的列表

matlab - 当期望值向量时,操作返回标量值

matlab - 用非常小的值计算matlab中的函数

matlab - 带有撇号的 Sprintf Matlab