MATLAB:将离散点拟合成曲线
2018-09-05 15:35 PJL_Allen 阅读(25825) 评论(0) 编辑 收藏 举报MATLAB将离散点拟合成曲线的两种方法:
1.使用spline函数。
x=[0 1 2 3 4 5 6 7 8 8.85]; y=[13 12.1 11 10.5 10.1 9.9 9.6 9.3 9.0 8.9]; xx=0:0.01:10; yy=spline(x,y,xx); plot(x,y,\'o\',xx,yy);
结果如下:
2. polyfit与polyval函数
[p,s]= polyfit(x,y,n)
说明:x,y为数据点,n为多项式阶数,返回p为幂次从高到低的多项式系数向量p。x必须是单调的。矩阵s用于生成预测值的误差估计。
多项式曲线求值函数:polyval( )
调用格式: y=polyval(p,x)
[y,DELTA]=polyval(p,x,s)
说明:y=polyval(p,x)为返回对应自变量x在给定系数P的多项式的值。
[y,DELTA]=polyval(p,x,s) 使用polyfit函数的选项输出s得出误差估计Y DELTA。它假设polyfit函数数据输入的误差是独立正态的,并且方差为常数。则Y DELTA将至少包含50%的预测值。
clear; clf; %清除当前窗口 clc; t = 1900:10:2000; %时间t y = [76 92 106 123 132 151 179 203 227 250 281]; %人口y plot(t,y,\'k*\'); hold on; % figure; %重新开一个图 p1 = polyfit(t,y,2); plot(t, polyval(p1, t)); axis([1900 2000 0 300]); %图像xy轴范围 disp(char([\'y=\',poly2str(p1,\'t\')],[\'a=\',num2str(p1(1)),\' b=\',... num2str(p1(2)),\' c=\',num2str(p1(3))]));
结果:
y= 0.0094289 t^2 - 34.7482 t + 32061.5711 a=0.0094289 b=-34.7482 c=32061.5711
t=[0:54]; y=[1.4712 1.45327 1.44467 1.42513 1.41487 1.40393 1.382667 1.3706 1.35807 1.34513 1.33187 1.3186 1.3048 1.29107 1.27733 1.2637 1.25007 1.2366 1.2311 1.2179 1.2049 1.19226 1.17993 1.175 1.1631 1.15167 1.14727 1.13633 1.125733 1.12193 1.11187 1.108533 1.099 1.0898 1.08693 1.078267 1.0758 1.0676 1.06547 1.0591 1.05586 1.0486 1.04707 1.0402 1.03893 1.03253 1.03153 1.02553 1.0248 1.019267 1.0188 1.013733 1.0134 1.01367 1.0088]; plot(t,y,\'o\'); hold on p=polyfit(t,y,2) y1=polyval(p,t); plot(t,y1)
结果: