3
我使用Eigen來處理大部分代碼,但我想使用GSL的Miser或Vegas monte-carlo集成。我需要將Eigen的向量轉換爲c陣列double
s 那麼最好的辦法是做什麼?將Eigen的Matrix轉換爲C數組的性能高效方式是什麼,以便我可以使用gsl
Matrix<double,3,1> --> c_array []
我使用Eigen來處理大部分代碼,但我想使用GSL的Miser或Vegas monte-carlo集成。我需要將Eigen的向量轉換爲c陣列double
s 那麼最好的辦法是做什麼?將Eigen的Matrix轉換爲C數組的性能高效方式是什麼,以便我可以使用gsl
Matrix<double,3,1> --> c_array []
我與艾根工作過......
通常情況下,簡單的訪問內部數組數據,如mentioned by user janneb in this thread,你只是想invoke data():
Vector3d v;
// Operations to add values to the vector.
double *c_ptr = v.data();
如果你想爲了迭代各個值來執行一些操作,您希望迭代每行行(.row(索引))和列(.col(索引)),這取決於ma trix的順序,你想躺在目的地載體。
在你的具體的例子,你只需要遍歷行:
Matrix<double,3,1> --> c_array []
你想打電話給.COL(0)。如果類似的需要而產生的,the specific documentation is always helpful!
所以,你最終會喜歡的東西(假設你希望使用一個三線單柱矩陣):
Vector3d v;
// Operations to add values to the vector.
for (int i=0; i<v.rows(); ++i)
c_array[i] = v(i,0);
希望這有助於。
我一直希望沒有複製的東西。但這會做現在 –
檢查答案的頂部:) –
出於好奇,這是你的遊戲機器人項目?如果是這樣,你打算做一個開源庫嗎?將使用哪種語言進行交互? C++? –