利用griddata进行二维插值
有时候会碰到这种情况:
实际问题可以抽象为 \(z = f(x, y)\) 的形式,而你只知道有限的点 \((x_i,y_i,z_i)\),你又需要局部的全数据,这时你就需要插值,一维的插值方法网上很多,不再赘述,这里仅介绍二维的插值法
这里主要利用 scipy.interpolate 包里 griddata 函数
griddata(points, values, xi, method='linear', fill_value=numpy.nan, rescale=False)
- points:二维数组,第一维是已知点的数目,第二维是每一个点的 \(x,y\) 坐标
- values:一维数组,和 points 的第一维长度一样,是每个坐标的对应 \(z\) 值
- xi:需要插值的空间,一般用
numpy.mgrid函数生成后传入 - method:插值方法
- nearest
- linear
- cubic
- fill_value:无数据时填充数据
该方法返回的是和 xi 的 shape 一样的二维数组
【example】
import numpy as np
import matplotlib.pyplot a plt
from scipy.interpolate import griddata
points = np.random.rand(n, 2) # n是已知点个数
values = np.random.rand(n) # 对应没每个点的值
# 插值的目标
# 注意,这里和普通使用数组的维度、下标不一样,是因为如果可视化的话,imshow坐标轴和一般的不一样
x, y = np.mgrid[
end1:start1:step1 * 1j,
start2:end2:step2 * 1j]
# grid就是插值结果,你想要的到的区间的每个点数据都在这个grid矩阵里
grid = griddata(points, values, (x, y), method="cubic", fill_value=0)
# 这里通过imshow显示时,坐标思维要按照计算机的来,普通图片是2维数组
# x 是最终结果的第一维,下标是从上到下由零增加
# y 是最终结果的第二维,下标是从左到右由零增加
plt.subplot(1, 1, 1)
plt.title("0°")
plt.imshow(grid, cmap='jet') # contourf jet gray
plt.colorbar()
plt.show()
np.mgrid函数每一个维度最后一个参数:
- 可以是实数中的整数,表示步长,此时不包括末尾数据(左闭右开)
- 可以是实部为零,虚部为整数的复数,这个数字表示该区间想要插值多少个点的数据(闭区间)
利用griddata进行二维插值的更多相关文章
- MATLAB二维插值和三维插值
插值问题描述:已知一个函数上的若干点,但函数具体表达式未知,现在要利用已知的若干点求在其他点处的函数值,这个过程就是插值的过程. 1.一维插值 一维插值就是给出y=f(x)上的点(x1,y1),(x2 ...
- matlab学习——05插值和拟合(一维二维插值,拟合)
05插值和拟合 1.一维插值 (1) 机床加工零件,试用分段线性和三次样条两种插值方法计算.并求x=0处的曲线斜率和13<=x<=15范围内y的最小值. x0=[0 3 5 7 9 11 ...
- 利用JAVA生成二维码
本文章整理于慕课网的学习视频<JAVA生成二维码>,如果想看视频内容请移步慕课网. 维基百科上对于二维码的解释. 二维条码是指在一维条码的基础上扩展出另一维具有可读性的条码,使用黑白矩形图 ...
- 【转】Android平台下利用zxing实现二维码开发
http://www.cnblogs.com/dolphin0520/p/3355728.html 现在走在大街小巷都能看到二维码,而且最近由于项目需要,所以研究了下二维码开发的东西,开源的二维码扫描 ...
- Android平台下利用zxing实现二维码开发
Android平台下利用zxing实现二维码开发 现在走在大街小巷都能看到二维码,而且最近由于项目需要,所以研究了下二维码开发的东西,开源的二维码扫描库主要有zxing和zbar,zbar在iPos平 ...
- 图像的降采样与升采样(二维插值)----转自LOFTER-gengjiwen
图像的降采样与升采样(二维插值) 1.先说说这两个词的概念: 降采样,即是采样点数减少.对于一幅N*M的图像来说,如果降采样系数为k,则即是在原图中 每行每列每隔k个点取一个点组成一幅图像.降采样很容 ...
- (转载)Android平台下利用zxing实现二维码开发
Android平台下利用zxing实现二维码开发 现在走在大街小巷都能看到二维码,而且最近由于项目需要,所以研究了下二维码开发的东西,开源的二维码扫描库主要有zxing和zbar,zbar在iPos平 ...
- matlab二维插值--interp2与griddata
二者均是常用的二维插值方法,两者的区别是, interp2的插值数据必须是矩形域(X,Y必须分别是单调向量),即已知数据点(x,y)组成规则的矩阵,或称之为栅格,可使用meshgid生成. gridd ...
- 利用PHP生成二维码(转)
导读:在二维码广泛应用化的今天,在web站点中自动生成对应的二维码是最基础的需求.文章介绍了使用PHP自动生成二维码的三种方式. get方法实现方式一: $urlToEncode="163. ...
随机推荐
- NOIP 模拟 $32\; \rm Walker$
题解 \(by\;zj\varphi\) 发现当把 \(\rm scale×cos\theta,scale×sin\theta,dx,dy\) 当作变量时只有四个,两个方程就行. 当 \(\rm n\ ...
- docker部署minio
快速部署 docker run -p 9000:9000 --name myminio \ -e "MINIO_ACCESS_KEY=AKIAIOSFODNN7EXAMPLE" \ ...
- jenkins部署web项目
Dockerfile FROM nginx:latest #MAINTAINER 维护者信息 MAINTAINER GosingWu 1649346712@qq.com ADD admin_test. ...
- TP6 服务器响应500时没有错误信息的解决方案
重点!!!! 首先,确认你的电脑管理员账户是否含有中文!!!!!!就像下面这种:所以出现了没有错误提示 查看nginx日志显示\vendor\topthink\framework\src\thi ...
- DLL-创建DLL
动态链接库的创建 fangyukuan 2010.6.20 编写DLL时的函数与一般的函数方法基本一样.但要对库中的函数进行必要的声明,以说明哪些函数是可以导出的,哪些函数是不可以导出的. 把DLL中 ...
- spring boot 的JPA项目
pom 文件 -------------------------------------------------------------------------- <dependencies&g ...
- .net 的析构函数和dispose模式
- 二级C语言题集
时间:2015-5-13 18:01 在131题之后是按考点分类的题集,有需要的朋友可以看一下 ---------------------------------------------------- ...
- flex布局中flex属性运用在随机发红包的算法上
flex布局是现在前端基本上都会运用的一种布局,基本上用到比较多的是父元素设置display:flex,两个子元素,一个设置固定宽度,另一个设置为flex:1(这里都指flex-direction为r ...
- 新东方APP技术团队建设
作者:张建鑫, 曾任IBM高级软件架构师, 滴滴高级技术专家, 现任新东方集团高级技术总监 2019年注定是不平凡的一年,在俞敏洪老师对科技条线的密切关注下, 吴强老师亲自操盘了对产品技术条线的改革, ...