-
2021-04-24 21:49:34
matlab二维插值--interp2与griddata
from:
matlab功能强大,以至于不知道他不能做什么,只是怨自己没有找到相应的函数。
二者均是常用的二维差值方法,两者的区别是,interp2的插值数据必须是矩形域,即已知数据点(x,y)组成规则的矩阵,或称之为栅格,可使用meshgid生成。而griddata函数的已知数据点(X,Y)不要求规则排列,特别是对试验中随机没有规律采取的数据进行插值具有很好的效果。griddata(X,Y,XI,YI,'v4') v4是一种插值算法,没有具体的名字,原文称为“MATLAB 4 griddata method”,是一种很圆滑的差值算法,效果很好。X和Y提供的已知数据点,XI和YI是需要插值的数据点,一般使用meshgrid生成,当然也可以其他数据,但是那样绘图的时候就比较麻烦,不能使用mesh等,只能使用trimesh。
示例如下:
a=[
3 3 1.5300
3 27 0.4210
5 17 0.5980
9 9 0.5900
13 25 0.4470
15 15 1
17 5 0.3830
21 21 0.3100
25 13 0.2830
27 3 0.2820
27 27 0.1200
];
x=a(:,1);
y=a(:,2);
z=a(:,3);
xtemp=linspace(min(x),max(x),100);
ytemp=linspace(min(y),max(y),100);
[X,Y]=meshgrid(xtemp,ytemp);
Z=griddata(x,y,z,X,Y,'v4');
surf(X,Y,Z)
shading interp
更多相关内容 -
二维插值方法.rar
2020-10-14 15:54:52二维插值方法,适用于二维插值,由于距离反比插值随距离越来越远,插值数据越来越小,开发的全新插值方式。 -
python 一维二维插值实例
2020-09-17 12:41:53主要介绍了python 一维二维插值实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 -
MATLAB——二维插值实例
2018-08-23 12:16:22本代码主要利用MATLAB工具实现MATLAB——二维插值实例,简单明了,易于理解 -
1_二维插值_二维克里金插值_克里金插值
2021-09-11 12:21:28二维克里金插值,用于将散点插值成二维矩阵 -
普通克里金法:使用地质统计学进行二维插值-matlab开发
2021-06-01 14:09:58这是一个基本但易于使用的函数来执行普通的克里金插值。 我称之为基本的,因为它总是包含所有观察值来估计未采样位置的值。 当样本位置不在自相关范围内但需要像 ak 最近邻搜索算法或类似的东西时,这可能没有必要... -
erwei_matlab_二维图像插值_二位插值_插值_二维函数_
2021-10-03 07:55:26matlab实现4种二维函数插值图像,对比 —— -
python实现二维插值的三维显示
2020-09-19 20:21:10主要为大家详细介绍了python实现二维插值的三维显示,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 -
解决gsl2.1、gsl2.4二维插值gsl_interp2d_bilinear不能被初始化问题
2018-01-24 10:57:41解决gsl2.4二维插值(gsl手册28章)无法初始化全局变量的问题: 将CY_billinear.h文件加进去就OK了。怀疑这个是在编译gsl库时没有将billinear.o文件链接好。在这里虽然看上去很累赘,但是管用。 -
一维二维插值c代码
2013-02-27 09:34:03十余种插值方法的c代码 埃特金不等距插值 埃特金等距插值 光滑不等距插值 三次样条函数插值 等等 -
二维插值
2020-02-25 13:06:09在一丘陵地带测量高程(高程指的是某点沿铅垂线方向到绝对基面的距离,称绝对高程,简称高程,简单理解就是高度),x,y每隔100m测一个点,得到高程z,试插值一曲面,确定合适模型,并由此找到最高点和该点高程。...本少侠又来了!
#1.插值节点为网格节点
先放题目:
在一丘陵地带测量高程(高程指的是某点沿铅垂线方向到绝对基面的距离,称绝对高程,简称高程,简单理解就是高度),x,y每隔100m测一个点,得到高程z,试插值一曲面,确定合适模型,并由此找到最高点和该点高程。所给数值放在程序里,懒得打了。
程序:x=100💯500;
y=100💯400;
z=[636 697 624 478 450
698 712 630 478 420
680 674 598 412 400
662 626 552 334 310];pp=csape({x,y},z’)%这个表达方式有点迷??
pp =
包含以下字段的 struct:
form: 'pp' breaks: {[100 200 300 400 500] [100 200 300 400]} coefs: [1×16×12 double] pieces: [4 3] order: [4 4] dim: 1
xi=100:10:500;yi=100:10:400;
cz=fnval(pp,{xi,yi});
[i,j]=find(cz==max(max(cz)))%找最高点的地址,有两个max是分别从行和列i =
8
j =
9
x=xi(i),y=yi(j),zmax=cz(i,j)%求最高点的坐标
x =
170
y =
180
zmax =
720.6252
感觉不用很多注释,这还蛮简单的
#2.插值节点为散乱节点
哭了运行完程序,程序没了。
就记录几个函数吧:
##1.xmm=minmax(x)
求x的最小值和最大值
xi=xmm(1):xmm(2);
从x的最小值遍历到最大值,
##2.zi1=griddata(x,y,z,xi,yi’,‘cubic’)
立方插值
zi2= griddata(x,y,z,xi,yi’,‘nearest’)
最近点插值,
##3.zi(isnan(zi1))==zi2(isnan(zi1))
把立方插值中的不确定的值换成最近点插值的结果
##4.mesh(xi,yi,zi)
画三维网格图 -
插值函数总结(下篇之二维插值)
2021-11-17 16:03:07插值函数总结(下篇之二维插值)命令2 interp2
功能:二维数据内插值(表格查找)
格式1:z1 = interp2(x,y,z,x1,y1)
返回矩阵z1,其元素包含对应于参量x1与y1(可以是向量、或同型矩阵) 的元素, 即z1(i,j) ←[x1(i,j),y1(i,j)]。大家可以输入行向量和列向量x1与y1,此时,输出向量z1与矩阵meshgrid(x1,y1)是同型的。同时取决于由输入矩阵x、y 与 z 确定的二维函数z=f(x,y)。参量x与y必须是单调的,且相同的划分格式,就像由命令meshgrid 生成的一样。若x1与y1中有在x与y范围之外的点,则相应地返回NaN(Not a Number)。参考实例:
[x,y] = meshgrid(-3:0.25:3); z=peaks(x,y); [x1,y1] = meshgrid(-3:0.125:3); z1 = interp2(x,y,z,x1,y1); surfl(x,y,z); hold on; surfl(x1,y1,z1+15) axis([-3 3 -3 3 -5 20]); shading flat hold off
结果展示:
格式2:z1= interp2(x,y,z,x1,y1,method)
用指定的算法method 计算二维插值:
’linear’:双线性插值算法(缺省算法);
’nearest’:最临近插值;
’spline’:三次样条插值;
’cubic’:双三次插值。案例一:
years = 1950:10:1990; service = 10:10:30; wage = [150.697 199.592 187.625 179.323 195.072 250.287 203.212 179.092 322.767 226.505 153.706 426.730 249.633 120.281 598.243]; w = interp2(service,years,wage,15,1975)
结果展示:
w = 190.6288
我们可以利用interp2插值来求解出与指定的x1和y1相对应的z1。
案例二(当x与y维度相同时):
years = 1970:10:1990; %y service = 10:10:30; %x wage = [150 199 187; 250 203 179; 153 426 249;]; x1=10:1:30; y1=1970:1:1990; z1= interp2(service,years,wage,x1,y1,"cubic")
结果展示:
z1 = 1×21 150.0000 172.1721 185.0352 191.2591 193.1792 192.7969 191.7792 191.4591 192.8352 196.5721 203.0000 212.1151 223.5792 236.7201 250.5312 263.6719 274.4672 280.9081 280.6512 271.0191 249.0000
我们就可以利用interp2插值来求解出与21组x1和y1相对应的21组z1。
案例三(当x与y维度不同时):
years = 1950:10:1990; %y service = 10:10:30; %x wage = [150.697 199.592 187.625 179.323 195.072 250.287 203.212 179.092 322.767 226.505 153.706 426.730 249.633 120.281 598.243]; x1=linspace(10,30,21); y1=linspace(1950,1990,21); z1= interp2(service,years,wage,x1,y1,"cubic")
结果展示:
z1 = 1×21 150.6970 163.0182 171.9318 177.8079 181.0839 182.2643 181.9160 180.6725 179.2311 178.3883 179.0920 182.3675 189.2554 201.1017 219.6234 246.9901 285.4695 337.2082 404.7324 490.7684 598.2430
我们就可以利用interp2插值来求解出与21组x1和y1相对应的21组z1。
格式3:z1= interp2(z,x1,y1)
缺省地,x=1:n、y =1:m,其中[m,n]=size(z)。再按第一种情形进行计算。
格式4:z1= interp2(z,n)
作n次递归计算,在z的每两个元素之间插入它们的二维插值,这样,z的阶数将不断增加。 interp2(z)等价于interp2(z,1)。 -
一篇文章带你搞定二维插值的 MATLAB 计算
2020-07-24 16:59:33前面已经学习了二维插值的基本概念:一篇文章带你认识数学建模中的二维插值 本篇文章主要实现使用MATLAB进行二维插值计算 文章目录一、网格节点的插值计算二、散点数据的插值计算1. 示例 12. 示例 2 一、网格节点的...前面已经学习了二维插值的基本概念:一篇文章带你认识数学建模中的二维插值
本篇文章主要实现使用MATLAB进行二维插值计算
一、网格节点的插值计算
Vq = interp2(X,Y,V,Xq,Yq)
使用线性插值返回双变量函数在特定查询点的插入值。结果始终穿过函数的原始采样。X 和 Y 包含样本点的坐标。V 包含各样本点处的对应函数值。Xq 和 Yq 包含查询点的坐标。
注意:x0,y0 为向量,但 z0 是矩阵,其列数等于 x0 的长度,行数等于 y0 的长度示例:
测得平板表面3*5
网格点处的温度分别为:
< -
九种常见的二维插值方法
2021-03-08 13:40:01双线性插值在数学上,双线性插值是线性插值的一种推广,用于在二维直线网格上插值两个变量(如x和y)的函数。 双线性插值首先在一个方向上使用线性插值,然后在另一个方向上使用线性插值。虽然每一步在采样值和位置... -
matlab学习——05插值和拟合(一维二维插值)
2021-04-21 07:02:09一维插值(1) 机床加工零件,试用分段线性和三次样条两种插值方法计算。并求x=0处的曲线斜率和13<=x<=15范围内y的最小值。x0=[0 3 5 7 9 11 12 13 14 15];y0=[0 1.2 1.7 2 2.1 2.0 1.8 1.2 1.0 1.6];x=0:0.1:15... -
插值方法(一维插值、三次样条插值、二维插值的matlab自带函数,python实现/作图)
2022-04-25 21:14:14一维插值函数 y = interp1(x0, y0, x, ‘menthod’) **method **指定插值的方法,默认为线性插值。其值可为: ‘nearest’ 最近项插值 ‘linear’ 线性插值 ‘spline’ 立方样条插. -
二维插值(Python)
2021-08-11 11:38:13# 标签 plt.colorbar(surf, shrink=0.5, aspect=5) # 标注 # 二维插值 newfunc = interpolate.interp2d(x, y, fvals, kind='cubic') # newfunc为一个函数 # 计算100*100的网格上的插值 xnew = np.linspace(-1, 1, ... -
二维插值-MATLAB
2020-07-25 23:27:00二维插值与MATLAB实例解析 二维插值,简单来说就是节点二维、插值函数二维,形如z=f(x,y)z=f(x,y)z=f(x,y)。 (一)插值节点为网格节点 网格节点,听命字就... -
二维插值的基本算法及算例
2010-07-23 09:50:38对二维线性插值的基本实现算法做了分类,并用matlab相关算法实现了简单算例 -
Python/Scipy二维插值(非均匀数据)
2021-01-14 23:26:01假设我想在二维矩形区域上插值。我的变量'z'包含如下所示的数据。每列的值都是常量,但是数组的每一行的值可能不同,如下面的注释所示。from scipy import interpolatefrom numpy import arrayimport numpy as np# #... -
1_二维插值_二维克里金插值_克里金插值.zip
2021-10-10 10:20:451_二维插值_二维克里金插值_克里金插值.zip -
2d_spline_cpp:C++ 的二维样条插值
2021-06-07 11:01:24gsl 库没有任何 2d 插值例程。 在这里,我通过 cython 为 scipy 2d 插值例程 RectBivariateSpline 提供了一个 C++ 接口。 Scipy 使用 P. Dierckx 的 fitpack,请参见 。 我包装的两个 fortran 子程序是 splev 和 ... -
一篇文章带你认识数学建模中的二维插值
2020-07-24 16:58:57本篇文章主要是认识数学建模中的二维插值 二维插值的具体计算可参考: 文章目录一、引言二、网格节点的概念三、散乱节点的概念四、二维插值的常见方法1. 网格节点插值法2. 散乱节点插值 一、引言 (1)如何绘制山区... -
气象 python二维插值
2022-04-03 10:05:11一、函数 scipy.interpolate.griddata(points, values, xi, method=‘linear’, fill_value=nan, rescale=False) ...二、参数 ...一维数组,shape为(n,) ,是需要插值的变量数据 如果需要插值的变量