利用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. ...
随机推荐
- metasploit的数据库配置
metasploit所处位置:/usr/share/metasploit-framework msf数据库连接命令:db_connect msf:msfadmin@127.0.0.1/msf 1.启动 ...
- SQL中的聚合函数运用
参考网址: https://zhuanlan.zhihu.com/p/245115561 聚合函数是什么 聚合函数是对一组值执行计算,并返回单个值的函数.常与 SELECT 语句的 GROUP BY ...
- COM笔记-包容与聚合
COM不支持实现继承的原因在于这种继承方式将使得一个对象的实现同另外一个对象的实现紧紧地关联起来.在这种情况下,当基类的实现被修改后,派生类将无法正常运行而必须被修改.这就是为什么一些用C++编写大型 ...
- 【转】CAP定理的含义
转自:https://blog.csdn.net/pengjunlee/article/details/86517935 1998年,加州大学的计算机科学家 Eric Brewer 提出了分布式系统的 ...
- 十二:Servlet3.0的注解
1.@WebListener注解 表示的就是我们之前的在xml中配置的 <listener> <listener-class>ListenerClass</listene ...
- Mysql 修改本地密码
第一步 update user set authentication_string=password('root') where user='root' and host='localhost'; 第 ...
- 多线程编程<二>
wait()与notify(): 1 public class ThreadComDemo { 2 public static void main(String[] args) { 3 try { 4 ...
- Linux c高级
目录 一.Linux 1.1.嵌入式 1.2.什么是Linux 1.3.Linux发行版 1.4.Linux体系结构 1.5.虚拟4G内存 1.6.shell 命令 1.7.软件包的管理 1.8.图形 ...
- ES6对象扩展——部分新的方法和属性
1.Object.is方法返回布尔值,和全等于===差不多,除了参数是+0和-0,以及NaN时 //Object.is,返回布尔值,和全等于===差不多,除了+0和-0,以及NaN console.l ...
- MySQL中的seconds_behind_master的理解
通过show slave status查看到的Seconds_Behind_Master,从字面上来看,他是slave落后master的秒数,一般情况下,也确实这样,我们可以通过Seconds_Beh ...