2017-06-06 38 views
1

我需要計算Vector3f的log10。 我試過了:Vector3f(Eigen Libs)的log10

Eigen::Vector3f valsingn = svd.singularValues()/svd.singularValues()(0); 
valsingn = valsingn.log10(); 

但它不起作用。

main.cpp:145:27: error: ‘Eigen::Vector3f {aka class Eigen::Matrix<float, 3, 1>}’ has no member named ‘log10’; did you mean ‘log’? 
    valsingn = valsingn.log10(); 

有沒有一種方法可以用這個矢量來計算log10

謝謝!

回答

2

最簡單的方法,將允許本徵仍然採用SIMD(我假設它的啓用)會做的基地一個簡單的變化:

valsingn = valsingn.array().log()/log(10.0); 

或者,您也可以通過log10作爲一個一元表達式:

valsingn.unaryExpr(&log10); // You may have to wrap 
          // log10 in a function of 
          // your own depending on 
          // the log10 overloads 
1

你需要移動到array world純係數明智的功能:

Vector3f v, w; 
w = v.array().log10(); 
w = log10(v.array()); 
Arrayt3f a, b; 
b = a.log10(); 
b = log10(a); 
+0

這是爲你編譯的嗎?你使用哪個版本的Eigen?在哪個文件中定義了「log10」?在Eigen 3.3中添加了 – m7913d

+1

@ m7913d'log10'。 –

+0

@ggael是否有SIMD'log10'?它沒有在[dox]中列出(http://eigen.tuxfamily.org/dox/group__CoeffwiseMathFunctions.html)。 –