美赛(matlab自学)之插值和拟合

插值和拟合

插值和拟合都是要根据一组数据构造一个函数作为近似。

插值方法

分段线性插值

分段线性插值函数,记作In(Xi)=Yi,函数在每个小区间[Xi,Xi+1]上是线性函数(i=0,1,……,n-1)
在这里插入图片描述
n越大,分段越多,插值误差越小。

拉格朗日插值多项式

在这里插入图片描述

样条插值

样条函数的概念

在这里插入图片描述

三次样条插值

在每一个小区间函数都是三次多项式,在[a,b]上二阶可微。
不妨记作:
在这里插入图片描述
在这里插入图片描述

matlab工具箱

y=interp1(x0,y0,‘method’)

method为插值方法,默认为线性插值
其值可为:
nearest 最近项插值
linear 线性插值
spline 立方样条插值
cubic 立方插值

y=spline(x0,y0,x)

三次样条插值函数

pp=csape((x0,y0,conds);

使用默认边界条件,即Lagrange边界条件
pp=csape(x0,y0,conds,valconds);
中的conds可为
在这里插入图片描述

y=fnval(pp,x);

csape返回的是pp形式,要求插值点的函数值,必须调用函数fnval
fnval 计算样条函数区间内任意一点的值

subplot函数:

功能:分割figure,创建子坐标系
h = subplot(m,n,p)/subplot(mnp) 将figure划分为m×n块,在第p块创建坐标系,并返回它的句柄。当m,n,p<10时,可以简化为subplot(mnp)或者subplot mnp

(注:subplot(m,n,p)或者subplot(mnp)此函数最常用:subplot是将多个图画到一个平面上的工具。其中,m表示是图排成m行,n表示图排成n列,也就是整个figure中有n个图是排成一行的,一共m行,如果第一个数字是2就是表示2行图。p是指你现在要把曲线画到figure中哪个图上,最后一个如果是1表示是从左到右第一个位置。 )

plot函数

功能:绘制二维图像
1:plot(X, Y, LineSpec)
LineSpec是绘图样式
y 黄
m 紫
c 青
r 红色
g 绿
b 蓝
w 白
k 黑

  • 实线
    : 点线
    -. 点划线
    – 虚线
  • 星号 p 五角星
    v 向下三角形
    ^ 向上三角形
diff函数

diff(函数) 求的一阶导数
diff(函数,n) 求的n阶导数

例题

例题1
在这里插入图片描述
代码:

x0=[0 3 5 7 9 11 12 13 14 15];
y0 =[0 1.2 1.7 2.0 2.1 2.0 1.8 1.2 1.0 1.6];
x=0:0.1:15;
y1 = interp1(x0 ,y0,x);
y2 = interp1(x0 ,y0,x,'spline');
pp1 =csape(x0 ,y0);
y3 = fnval(pp1,x);
pp2 = csape( x0 ,y0,'second');
y4 = fnval(pp2,x);
[x',y1' ,y2' ,y3',y4']
subplot(1,3,1)
plot(x0,y0,'+',x,y1)
title( 'Piecewise linear' )
subplot(1,3,2)
plot(x0,y0,'+',x,y2)
title( 'Spline1')
subplot(1,3,3)
plot(x0,y0,'+',x,y3)
title( 'Spline2')
dx =diff(x);
dy =diff(y3);
dy_dx =dy ./dx;
dy_dx0 =dy_dx(1)
ytemp =y3(131:151);
ymin = min(ytemp);
index = find(y3==ymin);
xmin=x(index); .
[xmin,ymin]

结果:
在这里插入图片描述

  • 3
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个MATLAB实现插值拟合的案例: 假设我们有一组实验数据,包括一系列输入值和对应的输出值。我们想要通过这些数据,得到一个函数,以便预测输入值对应的输出值。我们可以使用MATLAB中的插值拟合函数来实现这个目标。 首先,我们生成一组样本数据: ```matlab x = -5:0.1:5; y = sin(x) + 0.1*randn(size(x)); ``` 这里,我们生成了一组x坐标在-5到5之间,步长为0.1的数据,并对应计算了对应的输出值y,其中加入了一些随机噪声。 接下来,我们使用MATLAB中的插值函数interp1来对样本数据进行插值: ```matlab xi = -5:0.01:5; yi = interp1(x, y, xi, 'spline'); ``` 这里,我们生成了一组新的x坐标,步长为0.01,然后使用interp1函数对样本数据进行了插值,得到了新的y坐标。 最后,我们使用MATLAB中的拟合函数polyfit和polyval来对样本数据进行拟合: ```matlab p = polyfit(x, y, 4); yi_fit = polyval(p, xi); ``` 这里,我们使用polyfit函数对样本数据进行了4次多项式拟合,得到了拟合函数的系数p。接着,使用polyval函数对样本数据进行拟合,得到了新的y坐标。 最后,我们可以使用MATLAB中的plot函数来将实验数据、插值结果和拟合结果进行可视化: ```matlab plot(x, y, 'o', xi, yi, '-', xi, yi_fit, '--'); legend('实验数据', '插值结果', '拟合结果'); ``` 这里,我们使用plot函数将实验数据、插值结果和拟合结果进行可视化,方便我们进行分析和比较。 通过上述代码,我们可以使用MATLAB中的插值拟合函数,对实验数据进行插值拟合,得到预测函数,以便进行后续的分析和应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值