【问题标题】:armadillo C++: Cannot write float 2D array to fmatarmadillo C++:无法将浮点二维数组写入 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;

【问题讨论】:

    标签: c++ arrays armadillo


    【解决方案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:");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      • 2022-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-03
      相关资源
      最近更新 更多