MATLAB曲面拟合最小二乘法

已知x=[1,2,3,4,5,6,7];y=[7,6,5,4,3,2,1];z=[11,22,33,44,55,66,77]求最小二乘法的曲面拟合y=a*x+b*y+c;... 已知x=[1,2,3,4,5,6,7];y=[7,6,5,4,3,2,1];z=[11,22,33,44,55,66,77]
求最小二乘法的曲面拟合y=a*x+b*y+c;有没有直接matlab命令可以做 ,或者是matlab代码?
展开
 我来答
themanisjimmy
推荐于2017-09-26 · TA获得超过2757个赞
知道小有建树答主
回答量:843
采纳率:89%
帮助的人:232万
展开全部

matlab中用最小二乘拟合的常用函数有polyfit(多项式拟合)、nlinfit(非线性拟合)以及regress(多元线性回归)。由于是曲面拟合,自变量有2个,应变量一个,可以使用的有nlinfit和regress,线性时用regress,非线性时用nlinfit。


具体介绍一下regress

regress虽然名义上只能做线性回归但是可以把x^2等非线性量作为一个额外自变量做计算,因此在一些特殊情况下也可以做非线性拟合。

以matlab自带的数据为样本,示例代码如下:(%后面的是注释)

clc;clear;

load carsmall%此数据样本matlab自带

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

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

hold on;

c=ones(length(x),1);

b=regress(z,[x,y,c]);%纯线性拟合 模型z=b(1)*x+b(2)*y+b(3)

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

得到下图:


b=regress(z,[x.^2,y.^2,x.*y,x,y,c]);%添加非线性项进行拟合

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;

得到下图:

春风秋月不宜3354
2014-09-14 · TA获得超过203个赞
知道答主
回答量:139
采纳率:83%
帮助的人:64万
展开全部
x=[x1 x2 x3...],x2=[x1² x2² x3²...]
y=[y1 y2 y3...],y2=[y1² y2² y3²...]
z=[z1 z2 z3...],
n=length(x); X=[x2 y2 ones(n,1)]
a=regress(z,X)
c=a(3),b=a(2),a=a(1)
追问
为什么要假设x2呢?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式