本征块错误的列和行数量
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。
第三个和第四个参数是width和height,不是X2或Y2.
因此,只需传递 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();
我有一个大小为 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。
第三个和第四个参数是width和height,不是X2或Y2.
因此,只需传递 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();