C++:如何将std::向量运算转换为Eigen::VectorXf?

问题描述 投票:0回答:1

我有这个向量操作,我想实现Eigen:VectorXf来优化它的速度。

        for (int m = 0; m < vectorSize; ++m)
        {
            A[m] = ((B[m] * C[m]) + ((D[m] * E[m]) + (F[m] * G[m])));

            H[m] = A[m] * I[m];

            out = out + H[m];

            E[m] = C[m];
            C[m] = A[m];
        }

'out'是一个浮动变量. 最好的实现方式是什么?

非常感谢。

c++ eigen stdvector
1个回答
1
投票

对于向量,你必须使用 array() 以获得分量乘法。您可以使用 sum() 函数来计算 out 作为H的元素之和。

VectorXf  B, C, D, E, F, G, I;
//...
// Assuming all vectors have the same size

const VectorXf A = ((B.array() * C.array()) + (D.array()) * E.array()) + (F.array() * G.array());
const VectorXf H = A.array() * I.array();
const float out = H.sum();

E = C;
C = A;

请注意,如果你的向量大小在编译时是已知的,那么最好使用 Matrix<float,vectorSize,1> 而不是 VectorXf

© www.soinside.com 2019 - 2024. All rights reserved.