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

5

我希望能在一个大小为 M x N 的 arma::mat 和一个大小为MN的arma::vec 之间来回切换(后者是矩阵按列主元的线性化)。

我可以很容易地使用arma::vectorise从矩阵转换为向量,如下所示:

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

然而,我找不到一种简单的方法来实现相反的操作。我想在矩阵的第一列中插入向量的前M个值,在第二列中插入接下来的M个值,以此类推。是否有一种高效的方式来实现?

1个回答

5
使用高级构造函数,使矩阵中的内存与向量共享:点击此处查看高级构造函数
mat X(4,5);

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

// changing elements in X or V will affect both

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接