我希望能在一个大小为 M x N 的 arma::mat
和一个大小为MN的arma::vec
之间来回切换(后者是矩阵按列主元的线性化)。
我可以很容易地使用arma::vectorise
从矩阵转换为向量,如下所示:
arma::vec vector = arma::vectorise(matrix);
然而,我找不到一种简单的方法来实现相反的操作。我想在矩阵的第一列中插入向量的前M个值,在第二列中插入接下来的M个值,以此类推。是否有一种高效的方式来实现?
我希望能在一个大小为 M x N 的 arma::mat
和一个大小为MN的arma::vec
之间来回切换(后者是矩阵按列主元的线性化)。
我可以很容易地使用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
的大小,这两个对象将继续共享内存。