前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >matlab中如何求插值点,MATLAB插值「建议收藏」

matlab中如何求插值点,MATLAB插值「建议收藏」

作者头像
全栈程序员站长
发布于 2022-09-05 02:36:26
发布于 2022-09-05 02:36:26
4K0
举报

大家好,又见面了,我是你们的朋友全栈君。

4.5 插值

插值就是在已知数据之间计算估计值的过程,是一种实用的数值方法,是函数逼近的重要方法。在信号处理和图形分析中,插值运算的应用较为广泛,MATLAB提供了多种插值函数,可以满足不同的需求。

4.5.1 一维数据插值

一维数据插值常使用函数interp1,其一般的语法格式为:yi=interp1(x,y,xi,method)。其中y为函数值矢量,x为自变量的取值范围,x与y的长度必须相同;xi为插值点的向量或者数组,method为插值方法选项。对于插值,MATLAB提供了如下几种方法。

(1)邻近点插值(method=’nearest’)。

(2)线性插值(method=’linear’):在两个数据点之间连接直线,计算给定的插值点在直线上的值作为插值结果,该方法是interp1函数的默认方法。

(3)三次样条插值(method=’spline’):通过数据点拟合出三次样条曲线,计算给定的插值点在曲线上的值作为插值结果。

(4)立方插值(method=’pchip’or’cubic’):通过分段立方Hermite插值方法计算插值结果。

选择一种插值方法时,考虑的因素包括运算时间、占用计算机内存和插值的光滑程度。一般来说:

(5)邻近点插值方法的速度最快,但平滑性最差;

(6)线性插值方法占用的内存较邻近点插值方法多,运算时间也稍长,与邻近点插值不同,其结果是连续的,但顶点处的斜率会改变;

(7)三次样条插值方法的运算时间最长,但内存的占用较立方插值法要少,但其插值数据和导数都是连续的。在这4种方法中,三次样条插值结果的平滑性最好,但如果输入数据不一致或数据点过近,就可能出现很差的插值效果。

【例4-39】 一维插值函数interp1应用与比较示例。

>> x=0:10;

>> y=cos(x);

>> xi=0:0.25:10;

>> strmod={‘nearest’,’linear’,’spline’,’ pchip’}% 将插值方法存储到元胞数组

‘nearest’ ‘linear’ ‘spline’ ‘pchip’

>> strlb={‘(a)method=nearest’,'(b)method=linear’,…

‘(c)method=spline’,'(d)method=pchip’} % 绘图标签

Columns 1through 2

‘(a)method=nearest’ ‘(b)method=linear’

Columns 3through 4

‘(c)method=spline’ ‘(d)method=pchip’

>> for i=1:4

yi=interp1(x,y,xi,strmod{i}); % 插值

subplot(2,2,i) % 子图

plot(x,y,’ro’,xi,yi,’b’),xlabel(strlb(i)) % 绘图

本例创建了元胞数组strmod来存储4种用到的插值方法{‘nearest’,’linear’,’spline’,’pchip’},然后通过循环来调用插值函数interp1,最终插值的结果用图形来对比。一维插值结果比较如图4-4所示。可以看出,三次样条插值结果的平滑性最好,而邻近点插值效果最差。

图4-4 一维插值方法结果比较

4.5.2 二维数据插值

二维插值也是常用的插值运算方法,主要应用于图形图像处理和三维曲线拟合等领域。二维插值由函数interp2实现,其一般语法为:zi=interp2(x,y,z,xi,yi,method)。

其中x和y为由自变量组成的数组,x与y的尺寸相同,z为二者相对应的函数值;xi和yi为插值点数组,method为插值方法选项。interp1函数中的4种插值方法也可以在interp2函数中使用。

【例4-40】 二维插值函数interp2应用与比较示例。

[x,y,z]=peaks(6); % MATLAB自带的测试函数

mesh(x,y,z) % 绘制原始数据图

title(‘原始数据’)

[xi,yi]=meshgrid(-3:0.2:3,-3:0.2:3); % 生成供插值的数据网格

strmod={‘nearest’,’linear’,’spline’,’cubic’}; % 将插值方法存储到元胞数组

strlb={‘(a)method=nearest’,'(b)method=linear’,…

‘(c)method=spline’,'(d)method=cubic’}; % 绘图标签

figure % 建立新绘图窗口

zi=interp2(x,y,z,xi,yi,strmod{i}); % 插值

subplot(2,2,i)

mesh(xi,yi,zi); % 绘图

title(strlb{i}) % 图标题

本例计算了调用’nearest’、’linear’、’spline’和’cubic’等4种方法进行插值,其中原始数据如图4-5所示,插值之后的结果如图4-6所示。由结果图可以看出,各种插值方法的精度是不同的。

图4-5 二维插值原始数据

图4-6 二维插值结果

4.5.3 多维插值

多维插值包括三维插值函数interp3和n维插值函数interpn,其函数的调用方式及插值方法与一维、二维插值基本相同。这里以三维为例,其一般格式为:

zi=interp3(x,y,z,v,xi,yi,zi,method)

其中x、y、z为由自变量组成的数组,x、y、z的尺寸相同,v为相应的函数值;xi、yi、zi为插值点数组,method为插值方法选项。和一维插值的4种方法一致。

【例4-41】 三维插值函数interp3示例。

>> [x,y,z,v]=flow(8); % flow是MATLAB自带的测试函数

>> slice(x,y,z,v,[3,5],2,[-2,3]) % 画切片图

>> title(‘插值前’)

>>[xi,yi,zi]=meshgrid(0.1:0.25:10,-3:0.25:3,-3:0.25:3); % 创建插值点数据网格

>> vi=interp3(x,y,z,v,xi,yi,zi); % 插值

>> figure

>> slice(xi,yi,zi,vi,[3,5],2,[-2,3]) % 画插值后切片图

>> title(‘插值后’)

插值前的flow函数如图4-7所示,进行三维插值之后的结果如图4-8所示。

图4-7 插值前函数图

图4-8 插值后函数图

4.5.4 样条插值

样条函数产生的基本思想是:设有一组已知的数据点,目标是找一组拟合多项式。在拟合过程中,对于此数据组的每个相邻样点对(Breakpoints),用三次多项式去拟合样点之间的曲线。为保证拟合的唯一性,对该三次多项式在样点处的一阶、二阶导数加以约束。这样除被研究区间端点外,所有内样点处可保证样条有连续的一阶、二阶导数。

MATLAB中提供了spline函数来进行样条插值。spline函数的调用语法如下。

(1)yy = spline(x,y,xx):根据样点数据(x,y),求xx所对应的三次样条插值。

(2)pp = spline(x,y):从样点数据(x,y)获得逐段多项式样条函数数据pp。

【例4-42】 样条插值spline函数应用示例。

>> x = -4:4;

>> y = [0 .15 1.12 2.36 2.36 1.46 .49 .060]; % 插值前数据

>> cs = spline(x,[0 y 0]); % 插值

>> xx = linspace(-4,4,101); % 创建绘图自变量数组

>> plot(x,y,’o’,xx,ppval(cs,xx),’-‘); % 绘制结果图

得到的结果如图4-9所示。

图4-9 样条插值

编辑:青樱、蓬荜生辉、倾国倾城

复核:数韵校园工作室

如你对话题感兴趣,

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/135934.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年6月4,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Matlab中插值函数汇总和使用说明
MATLAB中的插值函数为interp1,其调用格式为:  yi= interp1(x,y,xi,'method')           
AIHGF
2019/02/18
5.6K0
Matlab中插值函数汇总和使用说明
Matlab插值方法大全
命令1 interp1 功能 一维数据插值(表格查找)。该命令对数据点之间计算内插值。它找出一元函数f(x)在中间点的数值。其中函数f(x)由所给数据决定。 x:原始数据点 Y:原始数据点 xi:插值点 Yi:插值点 格式 (1)yi = interp1(x,Y,xi) 返回插值向量yi,每一元素对应于参量xi,同时由向量x 与Y 的内插值决定。参量x 指定数据Y 的点。 若Y 为一矩阵,则按Y 的每列计算。yi 是阶数为length(xi)*size(Y,2)的输出矩阵。 (2)yi = interp1(Y,xi) 假定x=1:N,其中N 为向量Y 的长度,或者为矩阵Y 的行数。 (3)yi = interp1(x,Y,xi,method) 用指定的算法计算插值: ’nearest’:最近邻点插值,直接完成计算; ’linear’:线性插值(缺省方式),直接完成计算; ’spline’:三次样条函数插值。对于该方法,命令interp1 调用函数spline、ppval、mkpp、umkpp。这些命令生成一系列用于分段多项式操作的函数。命令spline 用它们执行三次样条函数插值; ’pchip’:分段三次Hermite 插值。对于该方法,命令interp1 调用函数pchip,用于对向量x 与y 执行分段三次内插值。该方法保留单调性与数据的外形; ’cubic’:与’pchip’操作相同; ’v5cubic’:在MATLAB 5.0 中的三次插值。 对于超出x 范围的xi 的分量,使用方法’nearest’、’linear’、’v5cubic’的插值算法,相应地将返回NaN。对其他的方法,interp1 将对超出的分量执行外插值算法。 (4)yi = interp1(x,Y,xi,method,’extrap’) 对于超出x 范围的xi 中的分量将执行特殊的外插值法extrap。 (5)yi = interp1(x,Y,xi,method,extrapval) 确定超出x 范围的xi 中的分量的外插值extrapval,其值通常取NaN 或0。 例1
全栈程序员站长
2022/09/05
1.3K0
matlab插值计算
插值方法有如下: method=‘nearest’,‘linear’,‘spline’,‘pchip’,‘cubic’ 比如使用三次条样插值spline,则
全栈程序员站长
2022/09/05
1.3K0
数学建模常用模型02:插值与拟合
拟合:已知有限个数据点,求近似函数,可不过已知数据点,只要求在某种意义下它在这些点上的总偏差最小。
小磊建模
2023/02/11
1.4K0
数学建模常用模型02:插值与拟合
matlab—回归与内插(完结)
十七、拟合(回归)与内插 17.1 polyfit()     假设当前有一组身高数据,与其对应的有一组体重数据,我们要分析两者之间是否有某种关联,这时就需要用到曲线拟合函数polyfit,其调用格式
mathor
2018/06/22
2.2K0
matlab差值报错,matlab插值介绍「建议收藏」
,构造一个解析函数(其图形为一曲线)通过这些点,并能够求出这些点之间的值,这一过程称为一维插值。
全栈程序员站长
2022/09/02
5420
matlab自带的插值函数interp1的几种插值方法
插值法又称“内插法”,是利用函数f (x)在某区间中已知的若干点的函数值,作出适当的特定函数,在区间的其他点上用这特定函数的值作为函数f (x)的近似值,这种方法称为插值法。如果这特定函数是多项式,就称它为插值多项式。
全栈程序员站长
2022/07/01
16.4K0
matlab自带的插值函数interp1的几种插值方法
Matlab线性插值
figure yi_nearest=interp1(t,p,x,'nearest');%最邻近插值法 plot(t,p,'ko'); hold on plot(x,yi_nearest,'g','LineWidth',1.5);grid on; title('Nearest Method');
AIHGF
2019/02/18
2.5K0
Matlab线性插值
MATLAB插值函数interp1
插值法又称“内插法”,是利用函数f (x)在某区间中已知的若干点的函数值,作出适当的特定函数,在区间的其他点上用这特定函数的值作为函数f (x)的近似值,这种方法称为插值法。如果这特定函数是多项式,就称它为插值多项式。
全栈程序员站长
2022/07/01
6740
MATLAB插值函数interp1
MatLab函数interp1、interp2、interp3、interpn
对二元函数数据进行插值,得到指定自变量值对应插值函数值。其中样本点数据为 meshgrid 格式。 【注】meshgrid 格式为一种完整网格格式(可使用 meshgrid 函数创建),即元素表示矩阵区域内的网格点。一个矩阵包含 x 坐标,另一个矩阵包含 y 坐标。x 矩阵中的值沿行方向严格单调递增,沿列方向为常量;y 矩阵则相反。
hotarugali
2022/03/01
5.1K0
matlab自带的插值函数interp1的四种插值方法
(1) Nearest方法速度最快,占用内存最小,但一般来说误差最大,插值结果最不光滑。
全栈程序员站长
2022/07/01
2.2K0
matlab自带的插值函数interp1的四种插值方法
插值法综合实例用matlab解决,matlab 插值法「建议收藏」
1、Lagrange插值法、Newton插值法的Matlab求解方法,在对Runge现象的观察基础上,了解高次插值的不稳定性及其改进方法;
全栈程序员站长
2022/08/22
1.2K0
MATLAB绘制三维地图「建议收藏」
1、meshgrid:生成格点矩阵,类似于给定坐标空间 [x,y]=meshgrid(1:10); 2、interp插值法 插值法又称“内插法”,是利用函数f (x)在某区间中已知的若干点的函数值,作出适当的特定函数,在区间的其他点上用这特定函数的值作为函数f (x)的近似值,这种方法称为插值法。
全栈程序员站长
2022/11/10
3.1K0
MATLAB绘制三维地图「建议收藏」
关于Matlab插值的问题,这些应该够用了吧
使用场景:用站点数据插值成网格数据时,可以使用散点数据插值方法 参考链接:https://ww2.mathworks.cn/help/matlab/ref/scatteredinterpolant.html
全栈程序员站长
2022/08/24
2.8K0
关于Matlab插值的问题,这些应该够用了吧
matlab插值函数的作用,matlab 插值函数[通俗易懂]
MATLAB中的插值函数为interp1,其调用格式为: yi= interp1(x,y,xi,’method’)
全栈程序员站长
2022/09/05
1.6K0
MATLAB 插值与拟合
二.拟合 1.1元多项式曲线拟合(Polynomial Curve Fitting):
全栈程序员站长
2022/09/06
8660
MATLAB 插值与拟合
matlab中的曲线拟合与插值
曲线拟合与插值 在大量的应用领域中,人们经常面临用一个解析函数描述数据(通常是测量值)的任务。对这个问题有两种方法。在插值法里,数据假定是正确的,要求以某种方法描述数据点之间所发生的情况。这种方法在下一节讨论。这里讨论的方法是曲线拟合或回归。人们设法找出某条光滑曲线,它最佳地拟合数据,但不必要经过任何数据点。图11.1说明了这两种方法。标有'o'的是数据点;连接数据点的实线描绘了线性内插,虚线是数据的最佳拟合。 11.1 曲线拟合 曲线拟合涉及回答两个基本问题:最佳拟合意味着什么?应该用什么样的曲线?可用许多不同的方法定义最佳拟合,并存在无穷数目的曲线。所以,从这里开始,我们走向何方?正如它证实的那样,当最佳拟合被解释为在数据点的最小误差平方和,且所用的曲线限定为多项式时,那么曲线拟合是相当简捷的。数学上,称为多项式的最小二乘曲线拟合。如果这种描述使你混淆,再研究图11.1。虚线和标志的数据点之间的垂直距离是在该点的误差。对各数据点距离求平方,并把平方距离全加起来,就是误差平方和。这条虚线是使误差平方和尽可能小的曲线,即是最佳拟合。最小二乘这个术语仅仅是使误差平方和最小的省略说法。
ccf19881030
2019/04/23
3.3K0
Matlab基础语法4
matlab提供了一些处理多项式的专用函数,用户可以很方便地进行多项式的建立、多项式求值、乘法和除法运算,以及求多项式的倒数和微分、多项式的根、多项式的展开和拟合等。 一、多项式的建立 对于多项式,用多项式的系数按照降幂次序存放在向量中,顺序必须是从高到低进行排列。例如,多项式可以用系数向量来表示。多项式就转换为多项式系数向量问题,在多项式中缺少的幂次要用0来补齐。 通过ploy2sym()将向量转换为多项式 如果通过多项式的根建立,可以使用ploy()来创建多项式 二、多项式的求值与求根 1.多项式求值
瓜大三哥
2018/02/26
1.1K0
Matlab基础语法4
matlab中interp1什么意思,matlab中interp1函数是什么意思啊?
csape只是Cubic spline插值,interp1可以选择几种不同的插值方法。
全栈程序员站长
2022/09/05
1.2K0
Matlab数据处理
(1) y=max(X):返回向量X的最大值存入y,如果X中包含复数元素,则按模取最大值。
十二惊惶
2024/02/28
2940
Matlab数据处理
相关推荐
Matlab中插值函数汇总和使用说明
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档