这个就看做是非线性拟合吧,仿照下面的例子:
function shiyan2
x1 = linspace( 0.5, 10, 15 );
x2 = linspace( 10, 20, 15 );
y = 2.5 * x1.^0.5 .* x2.^0.3; % 假设公式是这样的
% 利用已知数据进行非线性拟合,根据经验给abc一个初始值1, 1, 1,初始值不一定非要很准确
p = lsqcurvefit( @subfun, [ 1, 1, 1 ], [ x1', x2' ], y' );
disp( '拟合参数结果如下:' )
disp( [ 'a = ', num2str( p( 1 ) ), ', b = ', num2str( p( 2 ) ), ...
', c = ', num2str( p( 3 ) ) ] );
function ydata = subfun( p, xdata )
ydata = p( 1 ) * xdata( :, 1 ).^p( 2 ) .* xdata( :, 2 ).^p( 3 );
很简单啊,你对这个式子两边同时取对数,之后变成了简单的线性拟合,之后就可以用普通拟合方法得到。