armadillo C++:无法将浮点二维数组写入 fmat
Posted
技术标签:
【中文标题】armadillo C++:无法将浮点二维数组写入 fmat【英文标题】:armadillo C++: Cannot write float 2D array to fmat 【发布时间】:2015-12-11 20:47:24 【问题描述】:我有一个 2 浮点 2D 数组和 1D 数组。我想创建 fmat 变量并将 2D 数组写入它,然后将 1D 写入向量,然后使用高斯消除来解决它。当我尝试将二维数组写入变量时,我得到了结果:[matrix 1:0]
in other Segmentation fault
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<<"MATRIX\n\n";
A.print();
fvec B(elements+1);
for(int i=0;i<elements+1;++i)
B=loadVec[i];
cout<<B;
【问题讨论】:
【参考方案1】:fmat
类不是流,因此不能在循环中使用<<
操作。相反,只需复制元素。您还需要记住,Armadillo 将矩阵存储在 column-major order 中(为了与 LAPACK 兼容)。有关accessing elements 的更多信息,请参阅犰狳文档。
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:");
【讨论】:
以上是关于armadillo C++:无法将浮点二维数组写入 fmat的主要内容,如果未能解决你的问题,请参考以下文章
将浮点数组写入和附加到 C++ 中 hdf5 文件中的唯一数据集