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)