MATLAB:将离散点拟合成曲线

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)

结果:

 

 

转载于:https://www.cnblogs.com/Peijialun/p/9592402.html

  • 4
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值