C++:如何将 std::vector 操作转换为 Eigen::VectorXf?
C++: how to convert std::vector operations to Eigen::VectorXf?
我有这个矢量运算,我正在尝试实施 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' 是一个浮点变量。实现这个的最佳方法是什么?
非常感谢。
对于向量,您必须使用 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
我有这个矢量运算,我正在尝试实施 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' 是一个浮点变量。实现这个的最佳方法是什么?
非常感谢。
对于向量,您必须使用 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