![]() |
【求助】曲线拟合的题目
曲线拟合:
实测以下试验数据,请选用光滑的二次曲线拟合这些离散数据,要求: (1) 个数据点离曲线的综合误差尽可能小; (2) 画出拟合曲线图形,标出原始离散数据点。 (3) 划出误差分布图形,定量分析表述拟合误差。 x 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 y -0.44 1.97 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2 请高手指点啊 |
对于这个问题,小弟有几个粗浅的见解:
(1) 个数据点离曲线的综合误差尽可能小 可使用一维插值interp1,我选用了三次样条插值spline; (2) 画出拟合曲线图形,标出原始离散数据点 假设曲线是线性二次曲线:f(x)=a1*x^2+a2*x+a3,然后求出A=(a1,a2,a3),使得f(x(i))-y(i)最小(当然非线性也是可以的) (3) 划出误差分布图形,定量分析表述拟合误差 这个还不会,哈哈 下面是程序:x=[0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 >> y=[-0.44 1.97 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2]; >> X=0:0.01:1; >> Y=interp1(x,y,X,'spline'); >> A=polyfit(X,Y,2) >> z=polyval(A,X); >> plot(x,y,'k+',X,z,'r') |
我也不会(3) 请教高手啊
|
很急啊 呼唤高手
|
clear;clc;clf %清除内存中的变量,并清屏
x=0:0.1:1; y=[-0.44 1.97 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2]; A=polyfit(x,y,9);%把所有数据的y坐标关于x进行9次拟合,可以自己改 Y=poly2str(A,'X')%显示拟合多项式 xx=0:0.001:1;%设置xx Y=polyval(A,xx);%根据xx,用拟合多项式A生成拟合好的数据 plot(x,y,'*',xx,Y,'r') grid on%显示网格 |
很基础阿,不过还是不是很熟悉阿,好好学习了
|
x=[0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
y=[-0.44 1.97 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2]; a = linspace(0,1.0,100); b = interp1(x,y,a,'cubic'); plot(a,b,x,y,'cubic'); |
或者
x=[0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 >> y=[-0.44 1.97 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2]; a = 0:0.01:1.0; b = ployval(ployfit(x,y,3),a); plot(a,b,x,y,'bo'); 纠正一下刚才上面的错了 应该是plot(a,b,x,y,'bo'); 不是plot(a,b,x,y,'cubic'); |
yhat=(b(1)+b(2)*exp(b(3)*x+b(4)*x.^2))./(1+b(5)*exp(b(6)*x+b(7)*x.^2));
SSy = 129.6221 b=[11.28373734, 26.66992882, 5.978100169, -20.46399152, 111.9917405, -11.62488572, 4.328266653] RSS =2.932514206 MSe = 0.7331 R2 =.977376 |
所有时间均为北京时间。现在的时间是 03:27。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.