Vectorize the loops within the function
Afficher commentaires plus anciens
Hi, I am trying to create a function for Lagrange's interpolation and I wanted to know if there is a way to vectorize it that makes the code run faster
function y=lagrange(xx,yy,x)
% xx and yy are vectors of data values, x is the vector I want to interpolate
n=size(xx,2);
y=zeros(1,length(x));
for k=1:length(x)
for i=1:n
L=1;
for j =1:n
if j~=i
L=L*(x(k)-xx(j))/(xx(i)-xx(j));
end
end
y(k) =y(k)+yy(i)*L;
end
end
end
I tried to do the following but the code is actually slower
for k=1:length(x)
for i=1:n
j=1:n;j(j==i)=[];
L=prod((x(k)-xx(j))./(xx(i)-xx(j)));
y(k) =y(k)+yy(i)*L;
end
end
Any help is appreciated, thank you!
Réponse acceptée
Plus de réponses (0)
Catégories
En savoir plus sur Interpolation dans Centre d'aide et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!