我试图写一个创建整体对象的类。但是,构造函数无法正常工作。当GetAccess设置为private或protected时,它无法将integral.value设置为正确的值。只有当GetAccess设置为public时,它才有效。为什么??
这是代码。
classdef nintegral
properties(GetAccess=private, SetAccess=private)
value
end
methods
function v = nintegral(j) %class constructor
if isa(j,'pf')==0
disp('Function object is not a piecewise function')
else
v.value = integral(@(x) j.p1(1)*x.^2 + j.p1(2)*x + j.p1(3),j.r1(1),j.r1(2)) + integral(@(x) j.p2(1)*x.^2 + j.p2(2)*x + j.p2(3),j.r2(1),j.r2(2));
end
end
end
端
这是pf类。
classdef pf
properties(GetAccess=public,SetAccess=private)
r1=[-1,0]; %range 1
r2=[0,1]; %range 2
p1=[1,1,1]; %polynomial 1
p2=[1,1,1]; %polynomial 2
end
methods
function j=pf(r1,p1,r2,p2) % class constructor
if r1(2)>r2(1)
disp('ERROR FUNCTION DEFINITION: Overlaping range')
else
j.r1=r1;
j.r2=r2;
j.p1=p1;
j.p2=p2;
end
end
function v=eval(j,x)
if x<j.r1(1) | x>j.r2(2)
disp('Error: Out of Range')
else
if x>j.r1(1) & x<=j.r1(2)
v=polyval(j.p1,x);
else
v=polyval(j.p2,x);
end
end
end
end
端