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

表达式为:

已知231组(x,y)的值,跪求matlab具体算法,拟合出a,b,c的值。
231组数据在这里!http://tieba.baidu.com/p/4546273126

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

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

追问

曲线不是很好,不符合要求呢。我那数据第一列为x,第二列为y。你拟合出来的a、b、c分别是多少?

追答

ABC就是r

那是你的曲线,而且xy并不排序,画出来就是那样的

要不就是你的基函数选错了

温馨提示:答案为网友推荐,仅供参考