我想在arma::mat
大小 M x N 和arma::vec
大小 MN 之间来回切换(这是矩阵的主要列线性化)。
我可以很容易地从矩阵到向量使用arma::vectorise
,即
arma::vec vector = arma::vectorise(matrix);
但是,我找不到一种简单的方法来反过来。我想在矩阵的第一列中插入向量的第一个 M 值,在第二列中插入第二个 M 值,依此类推。有没有办法有效地做到这一点?
我想在arma::mat
大小 M x N 和arma::vec
大小 MN 之间来回切换(这是矩阵的主要列线性化)。
我可以很容易地从矩阵到向量使用arma::vectorise
,即
arma::vec vector = arma::vectorise(matrix);
但是,我找不到一种简单的方法来反过来。我想在矩阵的第一列中插入向量的第一个 M 值,在第二列中插入第二个 M 值,依此类推。有没有办法有效地做到这一点?
使用高级构造函数使矩阵中的内存与向量共享:
mat X(4,5);
vec V(X.memptr(), X.n_elem, false, false);
// changing elements in X or V will affect both
只要您的操作不会导致混叠或更改任何一个X
或的大小V
,这两个对象将继续共享内存。