How to add power of x from 0 to n-1

I have a function vandermonde
function c = vandermonde(x, y)
V = [x.^0 x x.^2 x.^3]
c = V \ y;
end
it works good if I give a vector x with 4 components. But how could I make it general, even if I give a vector x with 5,6 or even 15 components? so that V = [x.^0 x x.^2 x.^3 x.^4 x.^5 .... x.^14] ? with n or something like that?

 Risposta accettata

V=bsxfun(@power,x(:),0:n-1)

3 Commenti

Matt J
Matt J il 5 Nov 2015
Modificato: Matt J il 5 Nov 2015
Of course, I hope you are not using this as a substitute for POLYFIT.
thank you for your answer! It works! but we are not allowed to use bsxfun and @power. It is a homework, and we are beginners with matlab. it should be something really simple with the basics of MATLAB. Is there any other solution with "basic" commands?
Yes, perhaps. But it is your homework...

Accedi per commentare.

Più risposte (1)

Karim Belkhiria
Karim Belkhiria il 5 Nov 2015
Modificato: Karim Belkhiria il 5 Nov 2015
here is the answer that I searched for:
function c = vmonde(x, y)
n = length(x);
V = ones(n);
for j = 2:n
V(:,j) = x.*V(:,j-1);
end
c = V \ y;
disp(V)
end

1 Commento

I wonder if your teacher would also have accepted this
V=exp(log(x(:))*(0:n-1))

Accedi per commentare.

Categorie

Scopri di più su MATLAB in Centro assistenza e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by