function [y] = bspline(k,ind,x,p) %Questa funzione calcola la ind-esima B-spline di ordine k sul vettore dei nodi x nel punto p voluto %continuita` sull'estremo destro dell'intervallo if(p == x(length(x)) & ind==(length(x)-k)) y=1; return end %caso base per la relazione di ricorrenza if k==1 if (x(ind) <= p & x(ind+1) > p ) y=1; return else y=0; return end end %correzione per rimediare all'annullamento del denominatore div1=(p-x(ind))/(x(ind+k-1)-x(ind)); if (x(ind+k-1)-x(ind))==0 div1=0; end %correzione per rimediare all'annullamento del denominatore div2=(x(ind+k)-p)/(x(ind+k)-x(ind+1)); if (x(ind+k)-x(ind+1))== 0 div2=0; end %relazione di ricorrenza per le B-spline y= div1 * bspline(k-1,ind,x,p) + div2 * bspline(k-1,ind+1,x,p);