我正在尝试使用fit函数来估计4参数模型(P B A R)并在消息后遇到错误,我不知道它是什么意思。
Error using fit>iFit (line 367)
Function value and YDATA sizes are not equal.
Error in fit (line 108)
[fitobj, goodness, output, convmsg] = iFit( xdatain, ydatain, fittypeobj, ...
基本功能是
function c1 = c1(x,T,P,B,A,R)
if T == 0
c1=0;
else
G = @(t) 0.5*erfc((P./(4*B*R*t)).^0.5.*(B*R*x-t))...
-1/2*(1+P*x+P*t/(B*R))*exp(P*x).*erfc((P./(4*B*R*t)).^0.5.*(B*R*x+t))...
+(P*t/(pi*B*R)).^0.5.*exp(-P*(B*R*x-t).^2./(4*B*R*t)); %first term in the solution
u = @(t) A*t/(B*R);%.
v = @(t) A*(T-t)/(1-B)/R; %.
e = @(t) 2*(u(t.*v(t))).^0.5; %.
H1 = @(t) exp(-u(t)-v(t)).*(besseli(0,e(t))/B+besseli(1,e(t)).*((u(t)./v(t)).^0.5)/(1-B));
GH = @(t) G(t).*H1(t);
c1 = G(T).*exp(-A*T/(B*R))+A/R*integral(GH,0,T); %int((g*H1),0,T);
end
和基于上述函数c1的另一个函数是
function cm = cm(x,time,P,B,A,R,T1)
for i=1:length(time);
if time(i)<T1
cm(i)=c1(x,time(i),P,B,A,R);
else
cm(i)=c1(x,time(i),P,B,A,R)-c1(x,time(i)-T1,P,B,A,R);
end
end
该功能主要将数据分为两部分进行不同的计算。 我试着给一个合理的任意四个参数来运行cm来获取一组time-c数据,使用下面的代码
x=2;
time=0.1:0.1:10;
T1=2;
c=cm(x,time,0.8,0.8,0.8,0.8,T1);
并且效果很好
之后我尝试使用fit函数来拟合数据集以获取四个参数,使用以下代码
ft = fittype('cm(x,time,P,B,A,R,T1)','independent','time','problem','x'); % independent variable is time, fixed parameter x
>> [f, gof] = fit( time', c', ft, 'Lower', [0, 0, 0, 1,2], 'Upper', [1, 1, 1, 1,2],'problem',x);
那是我遇到错误的时候
Error using fit>iFit (line 367)
Function value and YDATA sizes are not equal.
我检查了从函数cm获得的输入时间-c数据,它们具有相同的大小,所以我不会看到输入数据有任何问题。我怀疑这是函数的问题,适合函数不起作用。 任何人都可以帮我解决这个问题吗?此外,YDATA是什么意思? 先感谢您 !