2016-06-13 45 views
3

我想在大小爲M×N的arma::mat和大小爲MN(這是矩陣的列主要線性化)的arma::vec之間來回切換。犰狳 - 從列向量中的值填充矩陣

我可以很容易地從矩陣去使用arma::vectorise到的載體,即

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

但是,我無法找到一個簡單的方法來繞去的其他方式。我想在矩陣的第一列插入矢量的前M個值,在第二個列中插入第二個M值,依此類推。有沒有辦法有效地這樣做?

回答

4

建立從矩陣存儲器,以使用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,這兩個對象將大小保持共享內存。