DM E = DM::eye(7);
Eigen::Matrix<double, 7, 7> mat = Eigen::Matrix<double, 7, 7>::Map(DM::densify(E).nonzeros().data(), 7, 7);DM::densify(E).nonzeros() first...from casadi import *A = SX.sym('A', 8, 8);A_inv1 = inv(A) # very slowA_inv2 = solve(A, SX.eye(8)) # fastsize_t rows = eigen_matrix.rows();
size_t cols = eigen_matrix.cols();
casadi_matrix.resize(rows,cols);
casadi_matrix = casadi::DM::zeros(rows,cols);
std::mempy(casadi_matrix.ptr(), eigen_matrix.data(), sizeof(double)*rows*cols);size_t rows = casadi_matrix.size1();
size_t cols = casadi_matrix.size2();
eigen_matrix.resize(rows,cols);
eigen_matrix.setZero(rows,cols);
std::memcpy(eigen_matrix.data(), casadi_matrix.ptr(), sizeof(double)*rows*cols);
casadi::DM Matrx = ...
casadi::Sparsity SpA = Matrx.get_sparsity();
std::vector<int> output_row, output_col;
SpA.get_triplet(output_row, output_col);
std::vector<double> values = Matrx.get_nonzeros();
using T = Eigen::Triplet<double>;
std::vector<T> TripletList;
TripletList.resize(values.size());
for(int k = 0; k < values.size(); ++k)
TripletList[k] = T(output_row[k], output_col[k], values[k]);
Eigen::SparseMatrix<double> SpMatrx(Matrx.size1(), Matrx.size2());
SpMatrx.setFromTriplets(TripletList.begin(), TripletList.end());