栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

二维插值,内插法和外插法

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

二维插值,内插法和外插法

如何一张图满足下面的函数:
z ( x , y ) = sin ⁡ ( π x 2 ) e y / 2 z(x, y) = sin (frac{pi x}{2})e^{y/2} z(x,y)=sin(2πx​)ey/2
这里x, y分别是该图片的水平和垂直像素,z表示像素值具体画图如下:

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 4, 13)
y = np.array([0, 2, 3, 3.5, 3.75, 3.875, 3.9375, 4])
X, Y = np.meshgrid(x, y)
Z = np.sin(np.pi*X/2) * np.exp(Y/2)

fig, ax = plt.subplots()
ax.pcolormesh(X, Y, Z)
plt.show()


对该图进行插值,也就是将该图片的像素扩大:

import numpy as np
from scipy.interpolate import interp2d
import matplotlib.pyplot as plt

x = np.linspace(0, 4, 13)
y = np.array([0, 2, 3, 3.5, 3.75, 3.875, 3.9375, 4])
X, Y = np.meshgrid(x, y)
Z = np.sin(np.pi*X/2) * np.exp(Y/2)

x2 = np.linspace(0, 4, 65)
y2 = np.linspace(0, 4, 65)
f = interp2d(x, y, Z, kind='cubic')
Z2 = f(x2, y2)

fig, ax = plt.subplots(nrows=1, ncols=2)
ax[0].pcolormesh(X, Y, Z)
ax[0].title.set_text('uninterpolate')

X2, Y2 = np.meshgrid(x2, y2)
ax[1].pcolormesh(X2, Y2, Z2)
ax[1].title.set_text('interpolated')

plt.suptitle('linear', color='red', fontsize=20)
plt.show()

插值后的结果:

上图采用的是’kind = cubic’的结果,采用’kind=liear’:

采用’kind=quintic’:

这里不同于interp1d,interp2d可以直接使用外插,只不过当提供了fillvalue后,会使用提供的值进行外插,如果不提供,将从边界处外推。注意的是内插要比外插精确。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/320064.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号