Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 用条件求最小值_Matlab_Sorting_Matrix_Indexing - Fatal编程技术网

Matlab 用条件求最小值

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)

我有一个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)

谢谢大家!

在继续评论中建议的内容时,您只能获取第二组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));