本征块错误的列和行数量

Eigen Block wrong amount of columns and rows

我有一个大小为 256x256 的特征矩阵。

我想将它缩小到 100x100,并希望保留内部值,以便索引 78,78 到 178,178 之间的值。

我想用块操作来做这个,但我得到一个大小错误的矩阵。该块有 178 行和 178 列,而不是 100 行和列。

 Eigen::MatrixXf small = Eigen::MatrixXf::Constant(100, 100, 0.0);
 small = matrix.block(78, 78, 178, 178).eval();
 cout<<small.rows()<<endl;
 cout<<small.cols()<<endl;`

输出 178 和 178。

我做错了什么?

你看错了the documentation

第三个和第四个参数是widthheight,不是X2Y2.

因此,只需传递 100、100。

根据文档 https://eigen.tuxfamily.org/dox/group__TutorialBlockOperations.html :

matrix.block(i,j,p,q); 

表示

Block of size (p,q), starting at (i,j)

所以你需要,在你的情况下 p=q=100,因此像

 small = matrix.block(78, 78, 100, 100).eval();