我正在将一些代码从Matlab移植到Armadillo,并停留在一个简单的步骤中。我正在根据条件找到 vector res的所有索引,然后要存储与条件相对应的矩阵Pts的所有行。

所以在Matlab中是什么

ifAny = find(res < lim);
Pts = Pts(ifAny,:);

在 Armadillo -
arma::uvec ifAny = arma::find(res < lim);
// elem gives only the single column
// Pts = Pts.elem(ifAny);

最佳答案

根据Submatrix view section of Armadillo's API documentationX.rows(vector_of_row_indices)将从矩阵vector_of_row_indices中提取所提供的X中选定的非连续行集。

因此,在您的情况下,要获得与Matlab的Pts = Pts(ifAny,:)等效的结果,可以使用:

Pts = Pts.rows(ifAny);

关于c++ - 为矩阵行分配特定索引,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29056301/

10-11 19:09