微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决在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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。