怎样用MATLAB拟合两个自变量的函数系数和指数?

y=c*x1^a*x2^b y x1 x2已知15组数据,怎样拟合出a b c 的值
2024-11-30 14:46:35
推荐回答(2个)
回答1:

这个就看做是非线性拟合吧,仿照下面的例子:

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 );


回答2:

很简单啊,你对这个式子两边同时取对数,之后变成了简单的线性拟合,之后就可以用普通拟合方法得到。