- 积分
- 15
- 注册时间
- 2002-6-1
- 仿真币
-
- 最后登录
- 1970-1-1
|
发表于 2002-6-10 20:59:02
|
显示全部楼层
来自 河北石家庄
回复: 【求助】关于最小二乘的拟合
%跟你举个例子
%X有8个采集点,对应x1,x2,x3,...y8(你可以可用矩阵来表示)
%Y有8个X的对应点(即Y=f(X)):y1,y2,y3,...y8
%所求得Y=f(X)=a0+a1*x+a2*x^2
%最后结果为y=12.9518-6.5688*x+0.9373*x^2
%还绘出了原始点的图形和拟合后的:y=12.9518-6.5688*x+0.9373*x^2的图形
%这里只作了到x^2,更高阶的继续写A矩阵..: 1, x1, x1^2,x1^3...x1^n... ;
%但是采用这种方法拟合多项式方次高时,会导致很大误差,
%你可以采用正交多项式拟合,我还没有加以研究过,对不起。。
clear all
syms x1 x2 x3 x4 x5 x6 x7 x8
syms y1 y2 y3 y4 y5 y6 y7 y8
clc
clf
x1=0.5; y1=10;
x2=1.5; y2=5;
x3=2; y3=4;
x4=2.5; y4=2;
x5=3.5; y5=1;
x6=4; y6=2;
x7=5; y7=4;
x8=6; y8=7;
XX=[x1,x2,x3,x4,x5,x6,x7,x8];
YY=[y1,y2,y3,y4,y5,y6,y7,y8];
A=[
1, x1, x1^2, x1^3, x1^4, x1^5;
1, x2, x2^2, x2^3, x2^4, x2^5;
1, x3, x3^2, x3^3, x3^4, x3^5;
1, x4, x4^2, x4^3, x4^4, x4^5;
1, x5, x5^2, x5^3, x5^4, x5^5;
1, x6, x6^2, x6^3, x6^4, x6^5;
1, x7, x7^2, x7^3, x7^4, x7^5;
1, x8, x8^2, x8^3, x8^4, x8^5
];
Y=[y1;
y2;
y3;
y4;
y5;
y6;
y7;
y8
];
AT=A.';
W=AT*A;
R=AT*Y;
T=inv(W);
a=T*R
x=0:0.1:6;
plot(XX,YY,'r+');
hold on;
plot(x,a(1)+a(2)*x+a(3)*x.^2+a(4)*x.^3+a(5)*x.^4+a(6)*x.^5,'y');
%好像拟合的很不错。。。你试试
hold on;
% %大海龟的程序你应该成这样。。。
x=[0.5,1.5,2,2.5,3.5,4,5,6];
y=[10,5,4,2,1,2,4,7];
n=5;%(五次方)
a=polyfit(x,y,n)
plot(x,y,'y+')
hold on
xx=0:0.1:6;
plot(xx,a(6)+a(5)*xx+a(4)*xx.^2+a(3)*xx.^3+a(2)*xx.^4+a(1)*xx.^5,'r')
% %拟合的也很不错,如果阶数更多的话(10次),比我的要好。。
% %注意,跟我的系数方向上是相反的。。。
%这是大海龟的系数a(行阵) -0.0077 0.0909 -0.3309 1.3270 -6.6915 13.0273
%这是我的系数a,完全一样(列阵)
%13.0273
%-6.6915
%1.3270
%-0.3309
% 0.0909
%-0.0077
%再有问题再问。。。 |
|