2014-07-01 1 views
0

Eigen::Array의 각 요소에 대해 10 진수 로그를 얻고 싶습니다. 배열의 기본 10 로그를 얻으려면 어떻게해야합니까?

자연 로그를 얻으려면, 나는 단순히 문서에 따라, array.log()을 수행 http://eigen.tuxfamily.org/dox/classEigen_1_1Array.html

그러나 나는 밑이 10 인 로그의 언급을 볼 수 없습니다. 분명히 내 자신의 글을 쓰지 않고 이것을 할 수있는 방법이 있습니까?

은 현재 내가 잘 작동하는 것 같다 array.unaryExpr(std::ptr_fun(std::log10)) 뭔가를하고 있어요,하지만 난 성능을 손상시키지 않고 깔끔한 뭔가를 기대했다.

답변

2

수학 사용 - 자연 로그 (10)로 자연 로그 (어레이)를 나눕니다. 이것이 많은 계산기가 모든 기반을 구현하는 것을 귀찮게 할 필요가없는 이유입니다. 왜냐하면 저의 전산 과학은 이것이 어쨌든 계산할 수있는 가장 빠른 방법이라고 생각합니다. e^x의 테일러 확장이 n을 통해 간단히 sum(x^n/n!) 인 반면, 다른베이스의 경우에는 (아마도 x에 처음으로 곱하여 계산할) 또 다른 지수 적 요소가 있기 때문입니다. e은 2가 컴퓨터 과학에서 우아한 숫자 인 것처럼 실제 분석에서 우아한 숫자입니다.

+0

감사합니다.하지만 성능이 중요하다고 언급 했어야합니다. 이는 추가적인 나누기 동작을 도입하여 요소 당 클록 사이클 수십억을 추가합니다. – arman

+0

나는 1/log (10)로 곱하면 될 수 있다고 생각한다. – arman

+0

@ Jason log (10)로 나누면 1/log (10)을 곱하는 것보다 비용이 더 듭니까? – djechlin