如何解决使用 fittype/testCustomModelEvaluation 时出错???索引超出数组边界
我正在尝试使用 fittype
并拟合代码以使用我定义的函数拟合一些数据。我定义的函数是:
function N = ModeloFrac01(x,Ninf,alf,alpha)
n = length(x);
N0 = 1;
mu = 1;
N = zeros(size(x));%zeros(1,n+1);
N(1) = N0;
for j = 0: n-1
c0 = coefc(j+1,x,alpha);
cj = coefc(j+1,j,alpha);
sum = 0;
for k = 1: j
ck = coefc(j+1,k,alpha);
ck_= coefc(j+1,k-1,alpha);
sum = sum + (ck_-ck)/cj*N(k+1);
end
N(j+2)=(c0/cj)*N0 - sum + (gamma(2-alpha)/cj)*alf*mu*N(j+1)*(1-(N(j+1)/Ninf)^(1/mu));
end
end
function c = coefc(n,mallaT,alpha)
Tn = mallaT(n+1);
Tj1= mallaT(j+2);
Tj = mallaT(j+1);
if j == n-1
c = (Tn - Tj)^(-alpha);
return;
end
c = ((Tn - Tj)^(1-alpha) - (Tn - Tj1)^(1-alpha))/(Tj1 - Tj);
end
现在,我要拟合的函数数据是:
n=500;
x = (0: 225/n: 225)';
y = zeros(1,n+1);
for j = 1: n+1
if x(j) < 74.238
y(j) = 1 + 0.0000476062*t(j)^4.7;
elseif x(j) < 170.946
y(j) = 2.79939e6 + 12352.1*t(j) - 855123*log(t(j));
else
y(j) = -4.93704e6 - 197.125*t(j) + 1.06562e6*log(t(j));
end
end
最后,我使用拟合和拟合函数的代码是:
ft = fittype( 'ModeloFrac01(x,alpha)',...
'dependent',{'N'},'independent',{'x'},'coefficients',{'Ninf','alf','alpha'});
f = fit( x,y,ft,'StartPoint',[1.0288e6,0.0171428,1.0] )
semilogy( f,y )
我知道要近似的数据和我定义的近似数据的函数很复杂,但我希望有人能帮助我,因为我得到的错误是:
Error using fittype/testCustomModelEvaluation (line 12)
Expression ModeloFrac01(x,alpha) is not a valid MATLAB expression,has non-scalar coefficients,or cannot be evaluated:
Error in fittype expression ==> ModeloFrac01(x,alpha)
??? Index exceeds array bounds.
Error in fittype>iCreateFittype (line 371)
testCustomModelEvaluation( obj );
Error in fittype (line 328)
obj = iCreateFittype( obj,varargin{:} );
Error in ajusteTest (line 22)
ft = fittype( 'ModeloFrac01(x,...
Caused by:
Error using fittype/evaluate (line 102)
Error in fittype expression ==> ModeloFrac01(x,alpha)
??? Index exceeds array bounds.
最后,有没有办法定义参数的边界?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。