Armadillo - 从列向量中的值填充矩阵

Posted

技术标签:

【中文标题】Armadillo - 从列向量中的值填充矩阵【英文标题】:Armadillo - fill a matrix from the values in a column vector 【发布时间】:2016-06-13 15:30:55 【问题描述】:

我想在大小为 M x N 的 arma::mat 和大小为 MN 的 arma::vec 之间来回切换(这是矩阵的主要列线性化)。

我可以使用arma::vectorise 轻松地从矩阵转到向量,即

arma::vec vector = arma::vectorise(matrix);

但是,我找不到一个简单的方法来反过来。我想在矩阵的第一列中插入向量的第一个 M 值,在第二列中插入第二个 M 值,依此类推。有没有办法有效地做到这一点?

【问题讨论】:

【参考方案1】:

使用advanced constructors使矩阵中的内存与向量共享:

mat X(4,5);

vec V(X.memptr(), X.n_elem, false, false);

// changing elements in X or V will affect both

只要您的操作不会导致别名或更改XV 的大小,这两个对象将继续共享内存。

【讨论】:

以上是关于Armadillo - 从列向量中的值填充矩阵的主要内容,如果未能解决你的问题,请参考以下文章

如何通过在 Rcpp 或 Armadillo 中将矩阵乘以向量元素来复制 R 的功能?

armadillo c++:将矩阵的每一行乘以向量的有效而简洁的方法?

armadillo C++:从数组初始化矩阵

犰狳 - 初始化矩阵并用值填充矩阵

C ++ Armadillo:来自二维矩阵的索引数组

Armadillo/C++:如何将元素从向量分配到立方体管?