1
我有一些向量VEC,我想通过沿着矢量本征:复制沿着一个维度的项目没有无用的分配
Eigen::VectorXf vec(5);
vec << 1, 2, 3, 4, 5;
const auto vec2 = vec.someAwesomeEigenMagic<3>();
//vec2 should contains (1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5)^T
//Not (1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5)^T
我当然可以创建这样的载体的尺寸复制值,以获得一个新的“表达” VEC2手动或使用重复+量化的本征::地图:
MatrixXf tmp = vec.replicate(1, 3).transpose();
const Map<VectorXf> vec2(tmp.data(), vec.rows() * 3, 1);
但我想vec2
是某种“固有模板表达式”没有allication(VEC可以说是相当大的,我会常常调用这个例程)并立即计算值。 (vec包含每个顶点的权重,我想用它来加权最小二乘)
我想过有关kronecker产品的技巧,但我不确定它是否针对产品进行了优化。此外,我希望避免不支持的模块
PS对不起,我的英语
谢谢你的回答!看起来很棒。只有两个问题 - ArrayXi :: LinSpaced没有分配任何东西?它是稳定的吗? –
根本没有分配。 – ggael