Die documentation sagt:Wie konvertiert man Zeilenvektor in Spaltenvektor in Eigen?
... in Eigen, Vektoren nur ein Spezialfall von Matrizen sind, mit entweder 1 Zeile oder Spalte 1. Der Fall, in dem sie 1 Spalte haben, ist am häufigsten; Solche Vektoren werden als Spaltenvektoren bezeichnet, die oft nur als Vektoren abgekürzt werden. In dem anderen Fall, in dem sie 1 Zeile haben, werden sie Zeilenvektoren genannt.
jedoch dieses Programm gibt unintuitive Ergebnisse:
#include <eigen3/Eigen/Dense>
#include <iostream>
typedef Eigen::Matrix<double, 1, Eigen::Dynamic> RowVector;
int main(int argc, char** argv)
{
RowVector row(10);
std::cout << "Rows: " << row.rows() << std::endl;
std::cout << "Columns: " << row.cols() << std::endl;
row.transposeInPlace();
std::cout << "Rows: " << row.rows() << std::endl;
std::cout << "Columns: " << row.cols() << std::endl;
}
Ausgang:
Rows: 1
Columns: 10
Rows: 1
Columns: 10
Ist das ein Bug, oder bin ich die Bibliothek falsch verwenden?
ich eine Assertion zur Entwicklung hinzugefügt Zweig von Eigen, um sich davor zu schützen (miss) zu benutzen. –