在犰狳中使用列向量而不是一维列矩阵有什么显着优势?

Any significant advantages to using column vectors instead of 1D column matrices in Armadillo?

为了简单和易于维护,我在二维和一维数组的 C++ 代码中专门使用 Armadillo 矩阵。例如,我使用向量初始化列表 但在实际使用之前立即将其转换为矩阵:

mat bArray = mat(colvec({0.1, 0.2, 0.3}));

我的大部分代码都由一维数组组成,只有少数地方我真正需要二维犰狳矩阵。

如果我将所有 (nx1) 个 Armadillo 矩阵转换为 (nx1) 个 Armadillo 列向量,是否会显着提高性能?我应该了解这两种数据结构之间的其他细微差别吗?

arma::vecarma::colvec 相同,它们只是 Col<double> 的类型定义。您可以在犰狳源代码的 typedef_mat.hpp 文件中看到这一点。此外,arma::Col<T> 继承自 Mat<T>,如 Col_bones.hpp 文件中所示。本质上,colvec 只是一个只有一列的矩阵。除了避免从临时向量到矩阵的不必要的复制之外,您什么也得不到。虽然这可能是一个举动,因为 colvec 是暂时的,因此即使是这样的收获也可能是微不足道的。

然而,如果您想要一个一维数组,请使用 colvec 而不是 mat 至少为了清楚起见。