美文网首页
Matlab中插值函数

Matlab中插值函数

作者: Clemente | 来源:发表于2018-08-09 09:54 被阅读136次

MATLAB中的插值函数为interp1,其调用格式为: yi= interp1(x,y,xi,'method')

其中x,y为插值点,yi为在被插值点xi处的插值结果;x,y为向量, 'method'表示采用的插值方法,MATLAB提供的插值方法有几种: 'method'是最邻近插值, 'linear'线性插值; 'spline'三次样条插值; 'cubic'立方插值.缺省时表示线性插值。

注意:所有的插值方法都要求x是单调的,并且xi不能够超过x的范围。

例:在一 天24小时内,从零点开始每间隔2小时测得的环境温度数据分别为

12,9,9,10,18 ,24,28,27,25,20,18,15,13
问题:推测中午12点(即13点)时的温度.

x=0:2:24;
y=[12   9   9   10   18  24   28   27   25   20  18  15  13];
x1=13;
y1=interp1(x,y,x1,'spline')
plot(x,y,'o' ,xi,yi)   %插值得到一天24小时的温度曲线

命令1 interp1

功能 一维数据插值(表格查找)。该命令对数据点之间计算内插值。它找出一元函数f(x)在中间点的数值。其中函数f(x)由所给数据决定。
x:原始数据点
Y:原始数据点
xi:插值点
Yi:插值点

(1)yi = interp1(x,y,xi,method)

用指定的算法计算插值:
’nearest’:最近邻点插值,直接完成计算;
’linear’:线性插值(缺省方式),直接完成计算;
’spline’:三次样条函数插值。
’cubic’:该方法保留单调性与数据的外形;

x = 0:10; y = x.*sin(x);

xx = 0:.25:10; yy = interp1(x,y,xx);

plot(x,y,'kd',xx,yy)

命令2 interp2

功能 二维数据内插值
(1)ZI = interp2(X,Y,Z,XI,YI,method)
返回矩阵ZI,其元素包含对应于参量XI 与YI(可以是向量、或同型矩阵) 的元素, 即Zi(i,j) ←[Xi(i,j),yi(i,j)]。用户可以输入行向量和列向量Xi 与Yi,此时,输出向量Zi 与矩阵meshgrid(xi,yi)是同型的。
(2)ZI = interp2(Z,XI,YI)
缺省地,X=1:n、Y=1:m,其中[m,n]=size(Z)。再按第一种情形进行计算。

用指定的算法method 计算二维插值:
’linear’:双线性插值算法(缺省算法);
’nearest’:最临近插值;
’spline’:三次样条插值;
’cubic’:双三次插值。

[X,Y] = meshgrid(-3:.25:3);
Z = peaks(X,Y);
[XI,YI] = meshgrid(-3:.125:3);
ZZ = interp2(X,Y,Z,XI,YI);
surfl(X,Y,Z);hold on;
surfl(XI,YI,ZZ+15)
axis([-3 3 -3 3 -5 20]);shading flat
hold off

命令3 interp3

(4)VI = interp3(X,Y,Z,V,XI,YI,ZI,method)
找出由参量X,Y,Z决定的三元函数V=V(X,Y,Z)在点(XI,YI,ZI)的值。
%用指定的算法method 作插值计算:
‘linear’:线性插值(缺省算法);
‘cubic’:三次插值;
‘spline’:三次样条插值;
‘nearest’:最邻近插值。

[x,y,z,v] = flow(20);

[xx,yy,zz] = meshgrid(.1:.25:10, -3:.25:3, 
-3:.25:3);

vv = interp3(x,y,z,v,xx,yy,zz);

slice(xx,yy,zz,vv,[6 9.5],[1 2],[-2 .2]); shading interp;colormap cool

命令4 griddata

功能 数据格点
(1)ZI = griddata(x,y,z,XI,YI,method)
用二元函数z=f(x,y)的曲面拟合有不规则的数据向量x,y,z。griddata 将返回曲面z 在点(XI,YI)处的插值。曲面总是经过这些数据点(x,y,z)的输入参量(XI,YI)通常是规则的格点(像用命令meshgrid 生成的一样)。

用指定的算法method 计算:
‘linear’:基于三角形的线性插值(缺省算法);
‘cubic’: 基于三角形的三次插值;
‘nearest’:最邻近插值法;
‘v4’:MATLAB 4 中的griddata 算法。

命令5 spline

功能 三次样条数据插值
格式
(1)yy = spline(x,y,xx)

x = [0 2 4 5 8 12 12.8 17.2 19.9 20]; y = exp(x).*sin(x);

xx = 0:.25:20;

yy = spline(x,y,xx);

plot(x,y,'o',xx,yy)

命令6 meshgrid

功能 生成用于画三维图形的矩阵数据
格式 [X,Y] = meshgrid(x,y) 将由向量x,y(可以是不同方向的)指定的区域[min(x),max(x) , min(y) , max(y)] 用直线x=x(i),y=y(j) ( i=1,2,…,length(x) ,j=1,2,…,length(y))进行划分。这样,得到了length(x)*length(y)个点,
这些点的横坐标用矩阵X 表示,X 的每个行向量与向量x 相同;这些点的纵坐标用矩阵Y 表示,Y 的每个列向量与向量y 相同。其中X,Y可用于计算二元函数z=f(x,y)与三维图形中xy 平面矩形定义域的划分或曲面作图。

[X,Y] = meshgrid(x) %等价于[X,Y]=meshgrid(x,x)。
[X,Y,Z] = meshgrid(x,y,z) %生成三维阵列X,Y,Z,用于计算三元函数v=f(x,y,z)或三维容积图。

[X,Y] = meshgrid(1:3,10:14)

相关文章

  • Matlab中插值函数

    MATLAB中的插值函数为interp1,其调用格式为: yi= interp1(x,y,xi,'method'...

  • 插值法-1

    Matlab主程序 Newton插值法函数 结果图 重点说明 poly(a1,a2,...,an)表示的是(x-a...

  • 数值分析之插值

    插值 一.基本概念 1.1插值需要研究的问题 插值函数是否存在? 如何构造插值函数? 如何评估误差? 1.2插值法...

  • 数值分析:插值与拟合

    1 插值 定义 设函数在区间上的个点,上的函数值为,若粗在函数,使成立,则称函数为的 插值函数,称为被插值函数,点...

  • 9.找出数组,矩阵中的最大值和最小值及位置

    Matlab实用编程小技巧1000例之九 来源:Matlab 编写函数,找出 n个数中的最大值和最小值及其所在位置...

  • 【数学建模算法】(26)插值和拟合:埃尔米特(Hermite)插

    1.埃尔米特(Hermite)插值 1.1.Hermite插值多项式 如果对插值函数,不仅要求它在节点处与函数同值...

  • 【数学建模算法】(番外6)Matlab曲线拟合工具箱cftool

    在之前的几节中我们介绍了一些插值和拟合的算法,这一节我们介绍Matlab中专用于曲线拟合和插值的工具箱——cfto...

  • 插值

    一维插值 插值不同于拟合。插值函数经过样本点,拟合函数一般基于最小二乘法尽量靠近所有样本点穿过。常见插值方法有拉格...

  • 三次插值函数的Matlab实现

    科学计算课的上机作业,留下来供日后参考。 mSpline文件 ms.m文件

  • 插值法-3

    体现样条插值的优越性 Matlab主程序 结果图 主要问题 三次样条插值的边值条件设定没有仔细考虑。 第一边界条件...

网友评论

      本文标题:Matlab中插值函数

      本文链接:https://www.haomeiwen.com/subject/xcjtbftx.html