2014-01-28 114 views
1

在MATLAB中,我可以做以下Eigen3平鋪矩陣向量

A = [1 2 3; 4 5 6]; 
A(:) 

獲得:

ans = 
1 
4 
2 
5 
3 
6 

我將如何做到這一點與Eigen3矩陣?

回答

1

最好的辦法是使用地圖:

Map<VectorXd> v(A.data(),A.size()); 

,因爲在這種情況下徵知道在編譯的時候,你現在有一個一維向量。

當然,結果將取決於A的存儲順序,也就是上,用於列主要矩陣(默認值):

[1 4 2 5 3 6]^T 

和用於行主之一:

[1 2 3 4 5 6]^T 
+1

第二個建議是一個壞主意,因爲它假設A以行主格式內部存儲,行之間沒有偏移量。在上面的簡單例子中,這將永遠是真實的,但在其他情況下它不會。 –

+0

這就是您想要使用的'resize()','conservativeResize()'不起作用。在這裏看到正確的答案:http://stackoverflow.com/questions/22881768/eigen-convert-matrix-to-vector – YvesgereY

+0

嗯,我太快了那一個,你說得對保守Resize不會在這裏工作。 – ggael