\$\begingroup\$
\$\endgroup\$
0
I have the following Matlab function:
function [res] = a3_funct(x)
res = 0;
for i = 1:size(x,1)
res = res + abs(x(i))^(i+1);
end
end
It's emulating this equation:
\$f(x) = \sum_{i=1}^{n}|x_i|^{i+1}\$
Here is an example use:
>> a3_funct([1,2,3]')
ans =
90
I know I should be able to use the sum()
function to make this faster, but how do I get the exponents in there?
Seanny123Seanny123
asked Jun 25, 2014 at 16:05
1 Answer 1
\$\begingroup\$
\$\endgroup\$
0
Vectorized approach:
res = sum(abs(x(:).'.^(2:numel(x)+1)))
Read more about vectorization techniques here.
Thus, your function would look like this:
function res = a3_funct(x)
res = sum(abs(x(:).'.^(2:numel(x)+1)));
return
200_success
145k22 gold badges190 silver badges478 bronze badges
answered Jun 25, 2014 at 16:45
lang-matlab