怎么用已知数据进行matlab函数拟合
z=b1*(x-b2)²-b3*(y-b4)²+b5求出来b,z是因变量,x,y自变量。选取了62个点的数据。用哪种拟合函数?
A=[0.08 0.00 0;0.08 0.01 0;0.08 0.02 0;0.08 0.03 0;0.08 0.04 0;0.08 0.05 0;0.08 0.06 825.033;0.08 0.07 250660;0.08 0.08 343379;0.08 0.09 342693;0.08 0.10 425817;0.08 0.11 572759;0.08 0.12 572565;0.08 0.13 567368;0.08 0.14 545491;0.08 0.15 541504;0.08 0.16 541632;0.08 0.17 559520;0.08 0.18 566870;0.08 0.19 566965;0.08 0.20 485341;0.08 0.21 334773;0.08 0.22 335178;0.08 0.23 285317;0.08 0.24 47941.7;0.08 0.25 0;0.08 0.26 0;0.08 0.27 0;0.08 0.28 0;0.08 0.29 0;0.08 0.30 0;0.09 0.00 0;0.09 0.01 0;0.09 0.02 0;0.09 0.03 0;0.09 0.04 0;0.09 0.05 0;0.09 0.06 1337.64;0.09 0.07 350045;0.09 0.08 482099;0.09 0.09 481473;0.09 0.10 525827;0.09 0.11 607711;0.09 0.12 607557;0.09 0.13 599059;0.09 0.14 561797;0.09 0.15 554831;0.09 0.16 554918;0.09 0.17 577049;0.09 0.18 586089;0.09 0.19 586107;0.09 0.20 540176;0.09 0.21 454426;0.09 0.22 455076;0.09 0.23 387710;0.09 0.24 66253.4;0.09 0.25 0;0.09 0.26 0;0.09 0.27 0;0.09 0.28 0;0.09 0.29 0;0.09 0.30 0];
>> x=A(:,1);
>>y=A(:,2);
>> z=A(:,3); 展开
z可以化为z=a1+a2x^2+a3x+a4y^2+a5y的形式
然后采用最小二乘法拟合算a1,a2,a3,a4,a5
代码:
A=[0.08 0.00 0;0.08 0.01 0;0.08 0.02 0;0.08 0.03 0;0.08 0.04 0;0.08 0.05 0;0.08 0.06 825.033;0.08 0.07 250660;0.08 0.08 343379;0.08 0.09 342693;0.08 0.10 425817;0.08 0.11 572759;0.08 0.12 572565;0.08 0.13 567368;0.08 0.14 545491;0.08 0.15 541504;0.08 0.16 541632;0.08 0.17 559520;0.08 0.18 566870;0.08 0.19 566965;0.08 0.20 485341;0.08 0.21 334773;0.08 0.22 335178;0.08 0.23 285317;0.08 0.24 47941.7;0.08 0.25 0;0.08 0.26 0;0.08 0.27 0;0.08 0.28 0;0.08 0.29 0;0.08 0.30 0;0.09 0.00 0;0.09 0.01 0;0.09 0.02 0;0.09 0.03 0;0.09 0.04 0;0.09 0.05 0;0.09 0.06 1337.64;0.09 0.07 350045;0.09 0.08 482099;0.09 0.09 481473;0.09 0.10 525827;0.09 0.11 607711;0.09 0.12 607557;0.09 0.13 599059;0.09 0.14 561797;0.09 0.15 554831;0.09 0.16 554918;0.09 0.17 577049;0.09 0.18 586089;0.09 0.19 586107;0.09 0.20 540176;0.09 0.21 454426;0.09 0.22 455076;0.09 0.23 387710;0.09 0.24 66253.4;0.09 0.25 0;0.09 0.26 0;0.09 0.27 0;0.09 0.28 0;0.09 0.29 0;0.09 0.30 0];
x=A(:,1);
y=A(:,2);
z=A(:,3);
B(:,2)=x.^2;
B(:,3)=x;
B(:,4)=y.^2;
B(:,5)=y;
B(:,1)=1;
a=inv(B'*B)*B'*z;
>> a
a =
1.0e+007 *
-0.0584
-2.9424
0.8533
-3.1661
0.9523
那么z就可以用a1,a2,a3,a4,a5表示了
拟合结果
如下两图
感觉把它看成正态分布的样子,可能效果好一些
如果你要让它中间低,两边高的话,可以设成z=a1+a2x^4+a3x^3+a4x^2+a5x+a6y^4+a7y^3+a8y^2+a9y的形式试一试
因为四次多项式可以具有中间低、两边高的特点