How to accelerate exponent (exp) calculation in MATLAB?
9 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hello everyone. I developed a program and I find it spends lots of time on calculating exp(-ax). So is there any way to accelerate such calculations exp(-ax)? Many thanks~
4 commentaires
Walter Roberson
le 21 Avr 2017
ZZZ = rand(1,1E6);
timeit(@() exp(ZZZ),0)
This is about 0.0045 seconds, so even 10^8 exp() would take less than 1/2 second.
Réponse acceptée
Jan
le 21 Avr 2017
Modifié(e) : Jan
le 21 Avr 2017
No. exp() is an expensive operation. The only way to accelerate it is to reduce repeated calls with the same argument.
I've experimented with the implementation of netlib.org, but did not found a significant acceleration and the results are lesss accurate. I assume this is the reason why it is not used in Matlab (in opposite to e.g. acos, which is taken from netlib).
A parfor loop might help to distribute the calculation to multiple cores.
Note: Think twice. If there would be a way to accelerate the computation of a specific function, it would have been included by Mathworks certainly. It is very pitty, but there are no magic tricks to make Matlab faster.
3 commentaires
Plus de réponses (1)
Rangeet Mitra
le 10 Nov 2018
Try replacing exp() by a custom function using a Hermite approximation for exp() (which is learnt a-priori for the dynamic range of your code). Without loss of performance, you will get a considerable speedup!!!
0 commentaires
Voir également
Catégories
En savoir plus sur Matrix Indexing dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!