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 类不是流,因此不能在循环中使用&lt;&lt; 操作。相反,只需复制元素。您还需要记住,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 文件中的唯一数据集

armadillo C++:从数组初始化矩阵

将二维数组从 C# 传递到 C++

使用 Visual C++ 将二维数组 int[n][m] 写入 HDF5 文件

无法将二维字符数组传递给函数(C++)

无法将二维数组传递给 C++ 中的辅助函数