给定一个vector<vector<double>> A_STL
,我想将其转换为arma::mat A
。
给定一个vector<vector<double>> A_STL
,我想将其转换为arma::mat A
。
一个简单的方法是将您的向量矩阵压缩成一维向量。因此,您可以使用mat(std::vector)
构造函数。
代码示例(未经测试):
// Flatten your A_STL into A_flat
std::vector<double> A_flat;
for (auto vec : A_STL) {
for (auto el : vec) {
A_flat.push_back(el);
}
}
// Create your Armadillo matrix A
mat A(A_flat);
注意如何排列您的向量。A_flat 应该是按列主序排列的。
template<typename T>
arma::Mat<T> convertNestedStdVectorToArmadilloMatrix(const std::vector<std::vector<T>> &V) {
arma::Mat<T> A(V.size(), V[0].size());
for (unsigned_t i{}; i < V.size(); ++i) {
A.row(i) = arma::conv_to< arma::Row<T> >::from(V[i]);
}
return A;
}
使用以下进行测试:
std::vector<std::vector<float_type>> vec = {{1.0, 2.0, 3.0}, {4.0, 5.0, 6.0}};
arma::Mat<float_type> mat = convertNestedStdVectorToArmadilloMatrix(vec);