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