当前位置:文档之家› 曲线拟合

曲线拟合


32
30
28
26
24
22
20
18 16
18
20
22
24
26
28
30
数据拟合函数表
cfit
fit
产生拟合的目标
用库模型、自定义模型、平滑样条或 内插方法来拟合数据 产生或修改拟合选项 产生目标的拟合形式 显示一些信息,包括库模型、三次样 条和内插方法等。 显示曲线拟合工具的信息 返回拟合曲线的属性 对于拟合曲线显示属性值
•输出结果为: •p = • Columns 1 through 5 • 0.0193 -0.0110 -0.0430 0.0073 0.2449 • Column 6 • 0.2961 •说明拟合的多项式为:
0.0193x 5 0.0110x 4 0.043x 3 0.0073x 2 0.2449x 0.2961
• 算例: >> years=1950:10:1990; >> service=10:10:30; >> wage = [150.697 199.592 187.625 179.323 195.072 250.287 203.212 179.092 322.767 226.505 153.706 426.730 249.633 120.281 598.243]; >> w = interp2(service,years,wage,15,1975) w= 190.6288
Method:用于指定插值的方法,linear:线性插值(默认方 法)。Cubic三次多项插值。Spline:三次样条插值。Nearst: 最近邻插值。
• 例
>> year=1900:10:2010; >> product=[75.995,91.972,105.711,123.203,131.669,... 150.697,179.323,203.212,226.505,249.633,256.344,267.893]; >> p1995 = interp1(year,product,1995) p1995 = 252.9885 >> x = 1900:10:2010; >> y = interp1(year,product,x,'cubic'); >> plot(year,product,'o',x,y)
• 最简单的插值方法是先根据基准数据,调用 MATLAB的绘图命令获得数据的图形表现,然 后估计所需点处的值。
6.8.1分段插值
• 算法分析:所谓分段插值就是通过插值点用折 线或低次曲线连接起来逼近原曲线。 • MATLAB实现 可调用内部函数。
– 命令1 interp1 格式1 yi = interp1(x,y,xi,’method’) 功能 :输入参数为原始数据点(x,y),xi为指定插 值点的横坐标,yi是在xi指定位置计算出的插值结果。
对于拟合结果求积分
对于新的观察量计算预测区间的边界
返回数据的描述统计量
估计一个拟合结果结果或拟合类型
画出数据点、拟合线、预测区间、异 常值点和残差
6.8 插值和样条(非参数拟合)
有时我们对拟合参数的提取或解释不感兴趣,只想得到一个平滑的 通过各数据点的曲线,这种拟合曲线的形式称之为非参数拟合。 • 非参数拟合的方法包括 • (1)插值法Interpolants • (2)平滑样条内插法Smoothing spline • 在多项式曲线拟合并不要求拟合曲线通过这些测量数据点。 而插值是在原始数据点之间按照一定的关系插入新的数据点,以 便更准确的分析数据的变化规律。他是在假定所给的基准数据完 全正确的情况下,研究如何“平滑”的估算出“基准数据”之间 其它函数值。
– 命令2 interp2
• 功能 二维数据内插值(表格查找) :是对两个变量的函数 z=f(x,y)进行插值。 • 格式 ZI = interp2(x,y,z,xi,yi,’method’) • 功能:输入参数为原始数据点(x,y,z);x,y为两个独 立向量,z为矩阵,是由x,y确定的点上的值。 • Z(i,:)=f(x,y(i))和Z(:,i)=f(x(i),y) • method计算二维插值: ’linear’:双线性插值算法(缺省算法); ’nearest’:最临近插值; ’spline’:三次样条插值; ’cubic’:双三次插值。
• • • • • • • • • •
>> y=polyval(a,T) %计算多项式在某一点处的值 y= 1.0e+003 * 0.7718 0.8132 0.8754 0.9502 1.0274 >> plot(T,R,'k+',T,y,'r*') >> hold on >> plot(T,y,'b') >> polyval(a,60) ans = 906.0212
x=[1 3 4 5 6 7 8 9 10]; y=[10 5 4 2 1 1 2 3 4]; [p,s]=polyfit(x,y,4); y1=polyval(p,x); plot(x,y,'go',x,y1,'b--')
10 9 8 7 6 5 4 3 2 1
1
2
3
4
5
6
7
8
9
10
>> poly2str(p,'t') ans = -0.0049945 t^4 + 0.11461 t^3 0.61143 t^2 - 1.1005 t + 11.5499
s=
R: [6x6 double] df: 0 normr: 2.3684e-016 mu = 0.1669 0.1499
自由度为 0 标准偏差为 2.3684e-016
例:根据表中数据进行4阶多项式拟合
X 1 3 4 4 5 2 6 1 7 1 8 2 9 3 10 4 F(x) 10 5
>> >> >> >> >>
1050
1000
950
900
850
800
750 20
30
40
50
60
70
80
90
100
• 例:已知年龄和运动能力的一组数据,试确定 二者的关系(根据图形指定次数)
• 年龄 17 19 21 23 25 27 29 • 第一人20.48 25.13 26.15 30.0 26.1 20.3 19.35 • 第二人24.35 28.11 26.3 31.4 26.92 25.7 21.3
fitoptions fittype cflibhelp
disp
get set
数据拟合函数表
excludedata
smooth confint differentiate
指定不参与拟合的数据
平滑响应数据
计算拟合系数估计值的置信区间边界
对于拟合结果求微分
integrate
predint datastates feval plot
•[p,s,mu]=polyfit(x,y,n) •返回多项式的系数,mu是一个二维向量 [u1,u2],u1=mean(x),u2=std(x),对数据进行预处理 x=(x-u1)/u2 例: x=1:20; y=sqrt(x)+sin(x); p=polyfit(x,y,5) [p,S]=polyfit(x,y,5) Plot(x,y,’o’,x,polyval(p,x),’-’)
• 例:已知的数据点来自函数
根据生成的数据进行插值处理,得出较平滑的曲线 直接生成数据。 >> x=0:.12:1; >> y=(x.^2-3*x+5).*exp(-5*x).*sin(x); >> plot(x,y,x,y,'o')
>> temp=[300,400,500,600]'; >> beta=1000*[3.33,2.50,2.00,1.67]'; >> alpha=10000*[0.2128,0.3605,0.5324,0.7190]'; >> ti=[321,400,571]'; >> propty=interp1(temp,[beta,alpha],ti); %propty=interp1(temp,*beta,alpha+,ti ,’linear’); >> [ti,propty] 例 对于temp,beta 、 ans = alpha分别有两组数据与 1.0e+003 * 之对应,用分段线性插值 0.3210 3.1557 2.4382 法计算当t=321, 440, 571 0.4000 2.5000 3.6050 时beta 、alpha的值。 0.5710 1.7657 6.6489
• • • •
[y,delta]=polyval(p,x,s) 产生置信区间y±delta。如果误差结果服从 标准正态分布,则实测数据落在y±delta区 间内的概率至少为50%。
• • • •
例 >> x=[0 0.0385 0.0963 0.1925 0.2888 0.385]; >> y=[0.042 0.104 0.186 0.338 0.479 0.612]; >> [p,s,mu]=polyfit(x,y,5)
y 0.2015x3 1.4385x2 2.7477x 5.4370
(2)Polyval函数
• • • • • 利用该函数进行多项式曲线拟合评价 y=polyval(p,x) 返回n阶多项式在x处的值,x可以是一个矩 阵或者是一个向量,向量p是n+1个以降序 排列的多项式的系数。
相关主题