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 Comments

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 on 26 Oct 2013
Edited: dpb on 26 Oct 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...
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.

Sign in to comment.

Answers (0)

Categories

Find more on Programming in Help Center and File Exchange

Tags

Asked:

on 26 Oct 2013

Commented:

on 26 Oct 2013

Community Treasure Hunt

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

Start Hunting!