在Armadillo中使用列向量代替一维列矩阵有何显着优势?

问题描述

为了简化和易于维护,我在C ++代码中仅将Armadillo矩阵用于2D和1D数组。例如,我利用了向量初始化器列表 但要在实际使用之前立即将其转换为矩阵:

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

我的大多数代码都由1D数组组成,只有很少几个地方真正需要2D Armadillo矩阵。

如果将所有(nx1)Armadillo矩阵都转换为(nx1)Armadillo列向量,我将获得显着的性能提升吗?我应该知道这两个数据结构之间还有其他细微差别吗?

解决方法

arma::vecarma::colvec相同,它们只是Col<double>的typedef。您可以在犰狳源代码的typedef_mat.hpp文件中看到此内容。同样,arma::Col<T>继承自Mat<T>,就像在Col_bones.hpp文件中一样。本质上,colvec只是具有单个列的矩阵。除了避免从临时向量到矩阵的不必要复制之外,您什么都不会获得。尽管也许这是一个举动,但是由于colvec只是暂时的,因此即使获得的收益也微不足道。

尽管如此,如果想要一维数组,则至少为了清楚起见,请使用colvec而不是mat

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...