1. 程式人生 > >Eigen庫行列賦值操作的Bug

Eigen庫行列賦值操作的Bug

Eigen版本:eigen3.3.4

沒有見過這麼奇怪的Bug......

進行行列賦值操作時,Eigen會自動轉置進行維度匹配,但是,有一種情況會報錯。

	//直接使用行和列對矩陣的行或者列進行賦值;
	Eigen::MatrixXf square1= Eigen::MatrixXf::Constant(30,30,1);
	Eigen::MatrixXf square2 = Eigen::MatrixXf::Constant(30, 30, 2);

	square1.row(0) = square2.row(0);//非同一個矩陣,Yes

	square1.row(0) = square1.row(0);//無需轉置,Yes
	square1.row(0) = square1.col(0);//同一個矩陣,且需要轉置,No

解決方案是,建立一個VectorXf的臨時變數

        Eigen::VectorXf tmp = square1.col(0);
	square1.row(0) = tmp;