Броненосец C++: невозможно записать двумерный массив с плавающей точкой в ​​формат

У меня есть 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<<"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 хранит матрицы в мажорном порядке (для совместимости с 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:");
Другие вопросы по тегам