matlab最小二乘拟合问题

 我来答
themanisjimmy
推荐于2016-06-20 · TA获得超过2757个赞
知道小有建树答主
回答量:843
采纳率:89%
帮助的人:232万
展开全部

matlab中用最小二乘拟合的常用函数有polyfit(多项式拟合)、nlinfit(非线性拟合)以及regress(多元线性回归)。自变量有2个或以上时,应变量一个,可以使用的有nlinfit和regress,线性时用regress,非线性时用nlinfit。对于进阶matlab使用者还有更多的选择,如拟合工具箱、fit函数、interp系列插值拟合等等。


关于regress,已经在http://zhidao.baidu.com/question/624121831961197044作了说明,所以这里讲讲nlinfit,使用与链接里面相同的数据与模型:(%后面的是注释)

clc;clear;

load carsmall%此数据样本matlab自带

x=Weight;y=Horsepower;z=MPG;%取这3个变量作为拟合对象,x、y自变量,z应变量

plot3(x,y,z,'p');

hold on;

f=@(b,t)t*b(1:2)+b(3);%纯线性拟合 模型z=b(1)*x+b(2)*y+b(3),t为[x y]

b=nlinfit([x,y],z,f,[1;1;1]);

[X,Y]=meshgrid(linspace(1500,5000,10),linspace(40,240,10));

C=ones(10);

mesh(X,Y,b(1)*X+b(2)*Y+b(3)*C);

grid on;

得到下图:

f=@(b,t)t*b(1:5)+b(6);%添加非线性项进行拟合,t为[x.^2,y.^2,x.*y,x,y]

b=nlinfit([x.^2,y.^2,x.*y,x,y],z,f,ones(6,1));

figure

plot3(x,y,z,'p');

hold on;

mesh(X,Y,b(1)*X.^2+b(2)*Y.^2+b(3)*X.*Y+b(4)*X+b(5)*Y+b(6)*C);

grid on;

得到下图:


由于所用模型一样,结果与用regress类似。

gisjun
2015-12-09 · TA获得超过178个赞
知道小有建树答主
回答量:268
采纳率:0%
帮助的人:150万
展开全部
网上有matlab最小二乘代码, 你可以随便下载, 请问你遇到什么问题?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我行我素850915
2015-07-04 · TA获得超过8241个赞
知道大有可为答主
回答量:5788
采纳率:77%
帮助的人:1754万
展开全部
1题:
>> x=[1; 2; 5; 10 ];
y=[3;2;3/2;1];
p=fittype('a+b/x','coefficients',{'a','b'});
p0=ones(2,1);
cf=fit(x,y,p, 'StartPoint', p0)

cf =

General model:
cf(x) = a+b/x
Coefficients (with 95% confidence bounds):
a = 0.9337 (0.4177, 1.45)
b = 2.092 (1.187, 2.997)
2题:
>> x=[1; 2; 3; 4 ];
y=[60;30;20;15];
p=fittype('a*exp(b*x)','coefficients',{'a','b'});
p0=ones(2,1);
cf=fit(x,y,p, 'StartPoint', p0)

cf =

General model:
cf(x) = a*exp(b*x)
Coefficients (with 95% confidence bounds):
a = 100.8 (48.57, 153.1)
b = -0.5442 (-0.8612, -0.2272)
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式