微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

获取特征 MatrixXf 中的每一行

如何解决获取特征 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 举报,一经查实,本站将立刻删除。