matlab拟合函数,表达式为y=a*(x^b)+c。

2025-03-04 12:23:15
推荐回答(1个)
回答1:

[x,I]=sort(x);y=y(I);%由于你的数字是杂乱的,我排列一下
f=@(a,x)a(1).*x.^(a(2))+a(3); %拟合形式,数组a即代表[a,b,c]
a0=[1,0.02,-5];  % 假设初始值
r=lsqcurvefit(f,a0,x,y);
%非线性拟合
%拟合结果保存在r=[a,b,c]
plot(x,y)
hold on
plot(x,r(1)*x.^r(2)+r(3),'r--')
legend('拟合前','拟合后')
disp(r)

希望帮到你,满意还请采纳哟!!