[英]How to convert row vector to column vector in Eigen?
文件說:
...在Eigen中,向量只是矩陣的一個特例,有1行或1列。 他們有1列的情況是最常見的; 這種矢量稱為列矢量,通常縮寫為矢量。 在他們有1行的另一種情況下,它們被稱為行向量。
但是,該程序輸出的結果不直觀:
#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;
}
輸出:
Rows: 1
Columns: 10
Rows: 1
Columns: 10
這是一個錯誤,還是我錯誤地使用了庫?
transposeInPlace
的文檔說:
注意
如果矩陣不是正方形,則
*this
必須是可調整大小的矩陣。
您需要您的類型同時擁有動態行和列:
Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic>
但是,已有一個typedef
: MatrixXd
。
或者,如果您仍然需要編譯時大小,則可以使用tranpose
而不是transposeInPlace
為您提供新的轉置矩陣,而不是修改當前的矩陣:
typedef Eigen::Matrix<double, Eigen::Dynamic, 1> ColumnVector;
ColumnVector column = row.transpose();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.