设为首页收藏本站

EPS数据狗论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1553|回复: 0

MATLAB:将离散点拟合成曲线

[复制链接]

8

主题

65

金钱

109

积分

入门用户

发表于 2019-7-4 15:30:43 | 显示全部楼层 |阅读模式

MATLAB将离散点拟合成曲线的两种方法:
1.使用spline函数。
  1. x=[0 1 2 3 4 5 6 7 8 8.85];
  2. y=[13 12.1 11 10.5 10.1 9.9 9.6 9.3 9.0 8.9];
  3. xx=0:0.01:10;
  4. yy=spline(x,y,xx);
  5. plot(x,y,'o',xx,yy);
复制代码

结果如下:
1.png

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%的预测值。
  1. clear;
  2. clf;                                                      %清除当前窗口
  3. clc;
  4. t = 1900:10:2000;                                         %时间t
  5. y = [76 92 106 123 132 151 179 203 227 250 281];          %人口y

  6. plot(t,y,'k*');
  7. hold on;
  8. % figure;                                 %重新开一个图
  9. p1 = polyfit(t,y,2);
  10. plot(t, polyval(p1, t));
  11. axis([1900 2000 0 300]);                                  %图像xy轴范围

  12. disp(char(['y=',poly2str(p1,'t')],['a=',num2str(p1(1)),'   b=',...
  13.     num2str(p1(2)),'   c=',num2str(p1(3))]));
复制代码

结果:
  1. y=   0.0094289 t^2 - 34.7482 t + 32061.5711
  2. a=0.0094289   b=-34.7482   c=32061.5711
复制代码

2.png
  1. t=[0:54];

  2. 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];

  3. plot(t,y,'o');

  4. hold on

  5. p=polyfit(t,y,2)

  6. y1=polyval(p,t);

  7. plot(t,y1)
复制代码

结果:
3.png
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

客服中心
关闭
在线时间:
周一~周五
8:30-17:30
QQ群:
653541906
联系电话:
010-85786021-8017
在线咨询
客服中心

意见反馈|网站地图|手机版|小黑屋|EPS数据狗论坛 ( 京ICP备09019565号-3 )   

Powered by BFIT! X3.4

© 2008-2028 BFIT Inc.

快速回复 返回顶部 返回列表