matlab中两个表达式的自定义fittype

matlab中两个表达式的自定义fittype,matlab,Matlab,我想使用两个相关表达式制作一个自定义的fittype: (f1/(1+ksv1*Q))+(f2/(1+ksv2*Q))==I/I0和f1+f2==1 我使用第一个表达式创建了一个fittype,现在将f1和f1设置为使用'problem'参数手动定义。显然,将它们作为普通系数进行拟合不会导致f1+f2=1 有没有办法将第二个条件添加到fittype Q = [ 0; 1; 10; 21;]; I = [ 2376.4; 2148.6; 1000.8; 736.52;]; % (f1/(1+ksv

我想使用两个相关表达式制作一个自定义的
fittype

(f1/(1+ksv1*Q))+(f2/(1+ksv2*Q))==I/I0
f1+f2==1

我使用第一个表达式创建了一个
fittype
,现在将
f1
f1
设置为使用
'problem'
参数手动定义。显然,将它们作为普通系数进行拟合不会导致
f1+f2=1

有没有办法将第二个条件添加到fittype

Q = [ 0; 1; 10; 21;];
I = [ 2376.4; 2148.6; 1000.8; 736.52;];
% (f1/(1+ksv1*Q))+(f2/(1+ksv2*Q))== I/I0
g = fittype('2376.4*((f1/(1+ksv1*Q))+(f2/(1+ksv2*Q)))','dependent',{'I'},'independent',{'Q'},'problem',{'f1','f2'}','coefficients',{'ksv1','ksv2'});
myfit = fit(Q,I,g,'problem',{.23,.77})
plot(myfit,Q,I)

最后,我将第二个表达式插入到第一个表达式中,并设置了系数的上限和下限

Q = [ 0; 1; 10; 21;];
I = [ 2376.4; 2148.6; 1000.8; 736.52;];
% (f1/(1+ksv1*Q))+(1-f1/(1+ksv2*Q))== I/I0 ; f1+f2=1, f2=1-f1 ; I0 = 2376.4
g = fittype('2376.4*((f1/(1+ksv1*Q))+((1-f1)/(1+ksv2*Q)))',...
        'independent',{'Q'},'dependent','I')

myfit = fit(Q,I,g,'lower',[0 0 0],'upper',[1 inf inf]) % bounds for [f1 ksv1 ksv2]
figure
plot(myfit,Q,I)