# 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:

>> 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)))


function res = a3_funct(x)