在Eigen中,我有一个M x kN
实矩阵,以默认的列主要顺序存储。每个M
行都包含N k
- 元组;例如,k=3, (a0 b0 c0 a1 b1 c1 ... aN bN cN)
。
如何提取包含每个k-
元素的向量(或其行或列是一组kN向量的矩阵);例如,(a0 a1 ... aN), (b0 b1 ... bN)
等
64位Windows 7,Visual C ++
答案 0 :(得分:0)
使用Eigen::Map
并将外跨步设为k * m.cols()
。
#include <Eigen/Core>
#include <iostream>
int main()
{
int sz = 8;
Eigen::MatrixXd m(8,8);
Eigen::Map<Eigen::VectorXd>(m.data(), sz*sz).setLinSpaced(1., sz*sz);
std::cout << m << "\n\n";
int k = 2;
Eigen::Map<Eigen::MatrixXd, 0, Eigen::Stride<Eigen::Dynamic, Eigen::Dynamic>>
mp(m.data(), sz, sz/k, Eigen::Stride<Eigen::Dynamic, Eigen::Dynamic>( k*m.cols(),1));
std::cout << mp << "\n\n";
Eigen::MatrixXd m2 = mp;
std::cout << m2 << "\n\n";
return 0;
}