分配具有特定索引的矩阵行

Assigning matrix rows with particular indices

我正在将一些代码从 Matlab 移植到 Armadillo,但卡在了一个简单的步骤。我正在根据条件找到向量 res 的所有索引,然后想要存储与条件对应的矩阵 Pts 的所有行。

那么matlab里面是什么

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

在犰狳中 -

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) 将从矩阵 X.[=16] 中提取所提供的 vector_of_row_indices 中选定的一组非连续行=]

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

Pts = Pts.rows(ifAny);