如何解决获取特征 MatrixXf 中的每一行
我想做一些简单的事情 - 在形状 [4,5] 的矩阵中每隔一行提取一次,以获得两个形状 [2,5] 的输出矩阵。我的矩阵是:
Eigen::MatrixXf m(4,5);
m << 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20;
当我打印时,我得到了预期:
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
现在如何获得预期的输出:?
// expected mOut1:
1 2 3 4 5
11 12 13 14 15
// and expected mOut2:
6 7 8 9 10
16 17 18 19 20
到目前为止,我尝试了 Eigen::Map
和 strides,但我不知道这些 strides 是如何工作的。
我做了一个函数:
Eigen::Map<Eigen::MatrixXf,Eigen::Stride<Eigen::Dynamic,Eigen::Dynamic>> myMatrixSlice(const float* data,unsigned dim1,unsigned dim2,int stride1,int stride2) {
using Stride = Eigen::Stride<Eigen::Dynamic,Eigen::Dynamic>;
return Eigen::Map<Eigen::MatrixXf,Stride>{
const_cast<float*>(data),dim1,dim2,Stride{stride1,stride2}};
}
我想这样称呼它:
auto mOut1 = myMatrixSlice(m.data(),?,?);
auto mOut2 = myMatrixSlice(m.data(),?); // remember to start with row=1
但我想我需要一些帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。