2
我在我的程序中使用Eigen3的一切與矩陣有關。我知道Eigen使用懶惰評估來優化所有計算。我想知道如果這樣的操作在限制不必要的計算的最優化感:本徵和懶惰評估
D = (A*B*C)(0,0);
其中A,B,C是矩陣和d是標量。在英語中,我只需要矩陣產品的一個元素。
謝謝。
我在我的程序中使用Eigen3的一切與矩陣有關。我知道Eigen使用懶惰評估來優化所有計算。我想知道如果這樣的操作在限制不必要的計算的最優化感:本徵和懶惰評估
D = (A*B*C)(0,0);
其中A,B,C是矩陣和d是標量。在英語中,我只需要矩陣產品的一個元素。
謝謝。
對於所有係數明智的操作,答案是肯定的。但是,矩陣產品是特殊的,因爲出於效率原因,它們默認情況下是在臨時值內進行評估的。您可以使用lazyProduct
執行矩陣乘積的懶評價:
double ABij = A.lazyProduct(B)(i,j);
對於像A*B*C
「三重」產品的情況比較棘手,因爲嵌套的產品總會被(評估,以避免在全身多處的重新評估例如:
A.lazyProduct(B*C.col(j))(i);
謝謝你,這正是我正在尋找的東西。據我所知,N個矩陣乘積的推廣是複雜的,不是嗎? (我不需要這個,但是出於好奇) – user2460530