Доступ к строкам и столбцам матрицы в C ++ с помощью собственных - PullRequest
0 голосов
/ 06 августа 2020

Допустим, у меня есть матрица на C ++:

#include <iostream>  
#include <Eigen/Dense>  

using namespace Eigen;  

 int main()  
 {  
   Matrix4d a;  
   a << 1, 2, 3, 4;  
        5, 6, 7, 8;
        9, 10, 11, 12;
        13, 14, 15, 16;
 }

Как мне go использовать библиотеку C ++ Eigen для управления отдельной строкой или столбцом? Я в основном пытаюсь воспроизвести команду MATLAB: a (:, 3) или (3, :) et c ...

Ответы [ 2 ]

1 голос
/ 06 августа 2020

При использовании библиотеки eigen для создания matrix вы можете просто использовать:

Функция matrix.col() для изменения столбца в данном matrix

Функция matrix.row() для изменения строк в заданном matrix.

Отдельные столбцы или строки являются случаями блоков.

Вот пример:

#include <Eigen/Dense>
#include <iostream>
 
 
int main()
{
  Eigen::MatrixXf a(3,3);
  a << 1,2,3,
       4,5,6,
       7,8,9;
  std::cout << "Here is the matrix:" << std::endl << a<< std::endl;
  std::cout << "Here is the third row: " << a.row(2) << std::endl;
  a.col(1) += 2 * a.col(0);
  std::cout << "Adding 2 times the first column into the second column. Now the matrix will be:\n";
  std::cout << a << std::endl;
 return 0;  
}
0 голосов
/ 06 августа 2020

... извини, что понял. просто используйте matrix.col () или matrix.row ()

ezpz

...