簡體   English   中英

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM