怎样用matlab作数据的最小二乘拟合

时间(小时) 0.25 0.5 0.75 1 1.5 2 2.5 3 3.5 4 4.5 5
酒精含量 30 68 75 82 82 77 68 68 58 51 50 41
时间(小时) 6 7 8 9 10 11 12 13 14 15 16
酒精含量 38 35 28 25 18 15 12 10 7 7 4

用polyfit()语句可以,


polyfit(x,y,拟合次数n);


x,y是你的数据,n是你要进行几次拟合,填1的话为一次也就是最小二乘法拟合


你可以这样写


x=[ 0.25 0.5 0.75 1 1.5 2 2.5 3 3.5 4 4.5 5 6 7 8 9 10 11 12 13 14 15 16];


y=[30 68 75 82 82 77 68 68 58 51 50 41 38 35 28 25 18 15 12 10 7 7 4];


p=polyfit(x,y,1);


plot(x,y,'b',x,polyval(p,x),'r');  %如果作图的话,蓝线为原数据,红线为拟合数据。

先画散点图大致确定曲线类型。然后用polyfit,polyval函数(这两个是多项式拟合的),比如指数型,取对数就可以用。函数用法百度下就好。

温馨提示:内容为网友见解,仅供参考
第1个回答  2010-08-23
用polyfit()语句可以
polyfit(x,y,拟合次数n);
x,y是你的数据,n是你要进行几次拟合,填1的话为一次也就是最小二乘法拟合
你可以这样写
x=[ 0.25 0.5 0.75 1 1.5 2 2.5 3 3.5 4 4.5 5 6 7 8 9 10 11 12 13 14 15 16];
y=[30 68 75 82 82 77 68 68 58 51 50 41 38 35 28 25 18 15 12 10 7 7 4];
p=polyfit(x,y,1);
plot(x,y,'b',x,polyval(p,x),'r'); %如果作图的话,蓝线为原数据,红线为拟合数据
不知道对你有没有帮助本回答被提问者采纳
第2个回答  2010-08-23
clc;clear;
t=[0.25 0.5 0.75 1 1.5 2 2.5 3 3.5 4 4.5 5 6 7 8 9 10 11 12 13 14 15 16];
w=[30 68 75 82 82 77 68 68 58 51 50 41 38 35 28 25 18 15 12 10 7 7 4];
plot(t,w,'o');%绘制输入数据点
n=input('Please input the order n =');%输入拟合阶次
p=polyfit(t,w,n);%得到拟合多项式的系数
tt=linspace(0,16,100);
ww=polyval(p,tt);
hold on;
plot(tt,ww);
hold off;
fprintf('%.0f 阶拟合多项式的系数为',n);p
相似回答