Speeding up calculation with power

I am having a problem with one line of code that needs to be repeated multiple times in a loop (approximately 1 million!) and is causing long computation times. It requires raising a number to the power which i think is the cause problem. Does anyone have any suggestions to increase the speed of this? Here is the problematic line
p=4:10000;
a(p)= b.^(p-3)*c;
Any help is greatly appreciated

3 comentarios

I wonder if in the context you are doing that calculation, it would be feasible to re-write it in terms of logarithms? Then it would be
Log_a(4:end) = log(c) + log(b) .* (p-3);
which might be faster.
dpb
dpb el 26 de Oct. de 2013
Editada: dpb el 26 de Oct. de 2013
Well, it's not associated with the power computation itself, but you have preallocated the result array a, haven't you?
What are b and c? Can you precompute, store and use the results of subbexpression(s) instead of recalculating every time?
And, in the end, if it's still a bottlneck there's always converting some portion to mex...
Cedric
Cedric el 26 de Oct. de 2013
We need to see the code with what you are doing before the loop for defining and/or preallocating a,b,p,c, and the loop itself.

Iniciar sesión para comentar.

Respuestas (0)

Categorías

Más información sobre Programming en Centro de ayuda y File Exchange.

Etiquetas

Preguntada:

el 26 de Oct. de 2013

Comentada:

el 26 de Oct. de 2013

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by