I get error undefined function or variable 'n' but don't show the line number.
    1 view (last 30 days)
  
       Show older comments
    
    Muhtasim Ahmed
 on 29 Mar 2018
  
    
    
    
    
    Answered: Star Strider
      
      
 on 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 Comments
Accepted Answer
  Star Strider
      
      
 on 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 Comments
More Answers (0)
See Also
Categories
				Find more on Splines in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
