求用matlab做线性多项式回归n=[ones(15,1),x',y',x1',y2',y1'];的解释

问题描述:给定三个向量x,y,z,求拟合函数 z=a0+a1*x+a2*y+a3*x^2+a4*x*y+a5*y^2
matlab程序如下:
x=[100 150 200 250 300 350 399.8 443 493 530.9 557.7 545.4 542.4 514.1 506.2];
y=[0 0 0 0 0 0 0.2 7 7 19.1 42.3 104.6 157.6 235.9 293.8 ];
z=[21.65 30.95 41.45 50.7 60.95 69.45 80.3 88.5 96 101.35 104.65 102.2 100.45 101.05 98.4];
x1=x.*x;
y1=y.*y;
y2=x.*y;
n=[ones(15,1),x',y',x1',y2',y1'];
[b,bint,r,rint,s]=regress(z',n)

我想知道的是n=[ones(15,1),x',y',x1',y2',y1'];这一句中,为什么要放x',y',x1',y2',y1'这几个进来,这5个参数前后的顺序是有什么规定的吗?
如果我要拟合的函数变成z=a0+a1*x+a2*y+a3*x^2+a4*x*y+a5*y^2+a6*x^3+a7*y*x^2+a8*x*y^2+a9*y^3; 那么我才编程的时候 n=[ones(15,1),x',y',x1',y2',y1']; 这句应该怎么写呢 需要添加三次的吗?

拟合函数 z=a0+a1*x+a2*y+a3*x^2+a4*x*y+a5*y^2
那你要拟合的自变量就是 (1, x, y, x^2, y^2)

所以依次放入n这5个向量 
顺序没有规定, 但你这么代入求出的b就是[a0 a1 a2 a3 a4 a5]'
如果你顺序颠倒为n=[ones(15,1),x1',y1',y2',x',y'], 那么求出的b就是[a0 a3 a5 a4 a1 a2]'

如果要拟合z=a0+a1*x+a2*y+a3*x^2+a4*x*y+a5*y^2+a6*x^3+a7*y*x^2+a8*x*y^2+a9*y^3;
那么要多设
x2=x.*x.*x;
y3=y.*y,*y;
x3=x.*x.*y;
y4=x.*y.*y;
再求n=[ones(15,1),x',y',x1',y2',y1',x2',x3',y4',y3'];
温馨提示:答案为网友推荐,仅供参考
相似回答