我有一个2浮点的2D数组和1D数组。我想创建fmat变量,并将2D数组写入其中,然后将1D数组写入向量,然后使用高斯消去法求解。当我尝试将2d Array写入变量时,我得到的结果是:其他分割故障中的[matrix 1:0]
fmat A;
for(int i=0; i<elements+1; ++i)
{
for(int j=0; j<elements+1; ++j)
A << globalMatrix[i][j];
A << endr;
}
cout<<"MATRIXnn";
A.print();
fvec B(elements+1);
for(int i=0;i<elements+1;++i)
B=loadVec[i];
cout<<B;
fmat
类不是流,因此不能在循环中使用<<
操作。相反,只需将元素跨接复制即可。您还需要记住,Armadillo以列主顺序存储矩阵(为了与LAPACK兼容)。有关访问元素的更多信息,请参阅Armadillo文档。
fmat A(elements+1, elements+1, fill::zeros);
for(unsigned int i=0; i<elements+1; ++i)
for(unsigned int j=0; j<elements+1; ++j)
{
A(i,j) = globalMatrix[i][j];
}
A.print("A:");
fvec B(elements+1);
for(unsigned int i=0; i<elements+1; ++i)
{
B(i) = loadVec[i];
}
B.print("B:");