作业帮 > 综合 > 作业

matlab 有公式的曲线拟合

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/18 03:08:57
matlab 有公式的曲线拟合
学了好几天matlab没会,请高手指教.希望详细一点.
x=0,46.01,92.64,187.16,387.53,780.50,
y=0,0.506,0.887,1.252,1.755,1.981
公式中有3个参数a,b,c需要求出,公式是:y=a*b*x/{(c-x)*[1+(b-1)*x/c]}.
x=[0 46.01 92.64 187.16 387.53 780.50];
y=[0 0.506 0.887 1.252 1.755 1.981];
f=@(p,x)p(1)*p(2)*x./((p(3)-x).*(1+(p(2)-1)*x/p(3))) ;
p=nlinfit(x,y,f,[1 1 1])%p=[a b c]
plot(x,y,'ro')
hold on
ezplot(@(x)f(p,x),[-10 800])
另外你也可以利用可视化工具cftool进行手动拟合
对于matlab7以前版本,不支持@定义函数的用下面的程序
x=[0 46.01 92.64 187.16 387.53 780.50];
y=[0 0.506 0.887 1.252 1.755 1.981];
f=inline('p(1)*p(2)*x./((p(3)-x).*(1+(p(2)-1)*x/p(3)))','p','x');
p=nlinfit(x,y,f,[1 1 1])%p=[a b c]
plot(x,y,'ro')
hold on
xx=-10:800;
yy=f(p,xx);
plot(xx,yy)
xlim([-10,800])