Matlab 用条件求最小值
我有一个2列多行的矩阵。我想在第一列中找到最小值的索引,但仅针对第2列小于5的值 以下是一个例子:Matlab 用条件求最小值,matlab,sorting,matrix,indexing,Matlab,Sorting,Matrix,Indexing,我有一个2列多行的矩阵。我想在第一列中找到最小值的索引,但仅针对第2列小于5的值 以下是一个例子: x = [3,2;2,4;1,6]; 我希望结果是索引2,因为2是第1列的最小值,条件是第2列小于5 在matlab中有没有一种更快的方法来实现这一点。我目前的解决办法是: indicesCandidates = x(:,2) < 5; minValue = min(x(indicesCandidates,1)); indicesMin = find(x(:,1) == minValue)
x = [3,2;2,4;1,6];
我希望结果是索引2,因为2是第1列的最小值,条件是第2列小于5
在matlab中有没有一种更快的方法来实现这一点。我目前的解决办法是:
indicesCandidates = x(:,2) < 5;
minValue = min(x(indicesCandidates,1));
indicesMin = find(x(:,1) == minValue)
谢谢大家! 在继续评论中建议的内容时,您只能获取第二组min:
如果您真的不需要最小值。当然还有一行,不需要任何更改
[~,indices] = min(x(x(:,2) < 5,1));
真正的问题是你说的更快是什么意思?如果你描述了一些事情,它们都差不多 是的,您可以使用函数的第二个输出参数删除最后一行:[minValue,indicatesmin]=minxindicesCandidates,1;但是,这个解决方案对于这个示例来说非常具体,而indicesCandidates似乎在代码运行期间可能会有所变化,只有在OP示例中它才保持不变。@EBH我根本不理解您的评论。指示牌日期可能不同,因此值5也可能不同。里面没有什么神圣的东西。例如[~,idx]=minxxsearchRows,searchCols
[~,indices] = min(x(x(:,2) < 5,1));