簡體   English   中英

本征:對不同類型的向量進行運算

[英]Eigen: Operating on Vectors of Different Types

我有很多表情

auto result = vec3f.cwiseProduct( vec3ui );

其中vec3f來自Eigen::Matrix< float, 3, 1 >vec3ui來自Eigen::Matrix< unsigned int, 3, 1 > 這些似乎是不允許的,至少編譯器對此有所抱怨。

因此我需要像上面這樣寫

Eigen::Matrix< float, 3, 1 > result( vec3f.x() * vec3ui.x(), /*...*/ );

這會導致代碼很長,可讀性較差。

是否可以使用特征3對上述表達式進行矢量化處理?

您需要將第二個矩陣轉換為第一個矩陣的形式,如下所示:

Eigen::Matrix< float, 3, 1 > mf;
Eigen::Matrix< unsigned int, 3, 1 > mi;
mf.dot(mi.cast<float>());

同樣,Eigen可以隨時使用矢量類型,例如Eigen::Vector3f表示浮點數, Eigen::Vector3i表示整數。 (但對於unsigned int沒有)

暫無
暫無

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

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