C++ 特征稀疏矩阵行向量断言失败

C++ 特征稀疏矩阵行向量断言失败,c++,matrix,linear-algebra,eigen,mosek,C++,Matrix,Linear Algebra,Eigen,Mosek,下面是我的代码,矩阵是一个填充的2x2稀疏矩阵: int size = 2 std::vector<Eigen::VectorXd> eachRow(size); for(unsigned int i = 0 ; i < size ; ++i) { Eigen::VectorXd Row(2); Row = matrix.row(i); eachRow.emplace_back(Row); } 请提供一份报告。特别是,显示矩阵是如何初始化的。(您可

下面是我的代码,矩阵是一个填充的
2x2
稀疏矩阵:

int size = 2
std::vector<Eigen::VectorXd> eachRow(size);

for(unsigned int i = 0 ; i < size ; ++i) 
{
    Eigen::VectorXd Row(2);
    Row = matrix.row(i);
    eachRow.emplace_back(Row);
}

请提供一份报告。特别是,显示
矩阵
是如何初始化的。(您可以删除
MSK_putcj
调用——除非该函数内部发生错误)如果要将稀疏矩阵复制到一组密集向量,为什么要使用稀疏矩阵?还要确保
matrix.cols()==size
其中
size
是第二个代码段之一。嗨,我的矩阵是由下面的代码构造的,它是一个逆矩阵sigen::SparseMatrix Mat(dim,dim);std::向量三元组列表;三元组列表。放置回(三元组(0,0,1));三元组列表。放置回(三元组(0,1,2));三元组列表。放置回(三元组(1,0,2));三元组列表。放置回(三元组(1,1,5));Mat.setFromTriplets(tripleList.begin(),tripleList.end());特征::simplicalllt解算器;计算(Mat);矩阵=解算器。解算(I);//I是身份您的MCVE仍然需要大量猜测(例如,
矩阵
I
的类型是什么)。请再次阅读上面的链接,就如何提供一个好的。请提供一个。特别是,显示
矩阵
是如何初始化的。(您可以删除
MSK_putcj
调用——除非该函数内部发生错误)如果要将稀疏矩阵复制到一组密集向量,为什么要使用稀疏矩阵?还要确保
matrix.cols()==size
其中
size
是第二个代码段之一。嗨,我的矩阵是由下面的代码构造的,它是一个逆矩阵sigen::SparseMatrix Mat(dim,dim);std::向量三元组列表;三元组列表。放置回(三元组(0,0,1));三元组列表。放置回(三元组(0,1,2));三元组列表。放置回(三元组(1,0,2));三元组列表。放置回(三元组(1,1,5));Mat.setFromTriplets(tripleList.begin(),tripleList.end());特征::simplicalllt解算器;计算(Mat);矩阵=解算器。解算(I);//I是身份您的MCVE仍然需要大量猜测(例如,
矩阵
I
的类型是什么)。请再次阅读上面的链接,就如何提供一个好的。
int row_index = 0;
for(int j=0 ; j < size ; ++j)
    r = MSK_putcj(task, j, eachRow[row_index][j]); // MSK_putcj(task, int, double)
int row_index = 0; 
Eigen::VectorXd Vec = eachRow[row_index]; 
for(int j=0 ; j < size ; ++j) r = MSK_putcj(task, j, Vec[j]); // MSK_putcj(task, int, double) 
Eigen::SparseMatrix<double> Mat(2, 2), matrix(2, 2), I(2, 2);
I.setIdentity(); 
std::vector<triplet> tripletList; 
tripletList.emplace_back(triplet(0, 0, 1)); 
tripletList.emplace_back(triplet(0, 1, 2)); 
tripletList.emplace_back(triplet(1, 0, 2)); 
tripletList.emplace_back(triplet(1, 1, 5)); 
Mat.setFromTriplets(tripletList.begin(), tripletList.end()); 
Eigen::SimplicialLLT < Eigen::SparseMatrix<double> > 
matrix = solver.solve(I); // I is the identity matrix with the same dimension