Vectorize Matlab sum 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:

&gt;&gt; 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?
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