I get error undefined function or variable 'n' but don't show the line number.
    1 vue (au cours des 30 derniers jours)
  
       Afficher commentaires plus anciens
    
    Muhtasim Ahmed
 le 29 Mar 2018
  
    
    
    
    
    Réponse apportée : Star Strider
      
      
 le 29 Mar 2018
            function BSpline_B=Coef(n,t,y,a)
int8 i;int8 n;real p;real q;real r;real s;
a=[];h=[];t=[];y=[];
for i=1:n-1
  h(i)=t(i)-t(i-1);
end
h(0)=h(1);
h(n+1)=h(n);
p=-1;
q=2*y(0);
r=p*q;
s=2;
for i=1:n
  e=h(i+1)/h(i);
  p=-e*p;
  q=-e*q+(e+1)*y(i);
  r=r+p*q;
  s=s+p.^2;
end
a(0)=r./s;
for i=1:n-+1
  a(i)= ((h(i-1)+h(i))*y(i-1)- (h(i)*a(i-1)))/(h(i-1));
end
end
function BSpline_B_Eval(n,t,a,h,x)
int8 i;int8 n;
real d;real e;real x;a=[];t=[];h=[];
for i=n-1:0
  if x-t(i)>=0
      break
  end
end
  i=i+1;
  d=(a(i+1)*(x-t(i-1))+a(i)*(t(i)-x+h(i)))./(h(i)+h(i+1));
  e= (a(i)*(x-(t(i-1)+h(i-1)))+a(i-1)*(t(i-1)-x+h(i)));
  BSpline_B_Eval= (d*(x-t(i-1))+e*(t(i)-x))/h(i);
 end
function BSpline_B_test()
int8 i;real e;real h;real x;
t=[];
y=[];
z=[];
n=41;
a=-1;
b=1;
q=(b-a)/n;
for i=0:n
  t(i)=a+i*h;
 y(i)=sin(t(i));
end
Coef(n,t,y,z)
temp=0;
for j=0:4*n
  x=a+j*h/4;
  e= abs(sin(x)-BSpline_B_Eval(n,t,y,z,x));
  if e> temp
      temp=e;
      disp(j+ e+ x);
  end
end
end
0 commentaires
Réponse acceptée
  Star Strider
      
      
 le 29 Mar 2018
        You have to call the function from a script, after you have defined values for all the arguments in your workspace:
n = ...;
t = ...;
y = ...;
a = ...;
BSpline_B = Coef(n,t,y,a);
You cannot run it correctly by clicking on the green Run triangle.
0 commentaires
Plus de réponses (0)
Voir également
Catégories
				En savoir plus sur Splines dans Help Center et File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

