迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

Python 中的双线性插值

作者:迹忆客 最近更新:2023/12/17 浏览次数:

线性插值在线性多项式的帮助下用于曲线拟合。

双线性插值是线性插值的扩展,用于在线性插值的帮助下对任意两个给定变量的函数进行插值。

让我们演示在 Python 中实现双线性插值的不同方法。


在 Python 中创建一个用户定义函数以实现双线性插值

在这里,我们创建了一个与四个点关联的用户定义函数,并利用 Python 中的双线性插值。

def bilinterpol(a, b, pts):
    i = sorted(pts)
    (a1, b1, x11), (_a1, b2, x12), (a2, _b1, x21), (_a2, _b2, x22) = i
    if a1 != _a1 or a2 != _a2 or b1 != _b1 or b2 != _b2:
        print("The given points do not form a rectangle")
    if not a1 <= a <= a2 or not b1 <= b <= b2:
        print("The (a, b) coordinates are not within the rectangle")
    Y = (
        x11 * (a2 - a) * (b2 - b)
        + x21 * (a - a1) * (b2 - b)
        + x12 * (a2 - a) * (b - b1)
        + x22 * (a - a1) * (b - b1)
    ) / ((a2 - a1) * (b2 - b1) + 0.0)
    return Y


pts = [
    (0, 1, 12),
    (4, 1, 0),
    (0, 3, -4),
    (4, 3, 8),
]
print(bilinterpol(2, 3, pts))

输出:

2.0

在 Python 中使用 scipy.interpolate.interp2d() 实现双线性插值

SciPy 库是 Scientific Python 的缩写,是开源的。

由大量实用函数组成,有助于数据科学、优化、插值、线性代数、信号处理等。SciPy 库使用并依赖于 NumPy 库。

此方法可以处理处理 NumPy 数组的非常复杂的问题。我们案例中的 scipy.interpolate.interp2d() 函数在 2d 网格上实现双线性插值。

语法:

scipy.interpolate.interp2d(
    x, y, z, kind="linear", copy=True, bounds_error=False, fill_value=None
)

该函数包含三个重要参数,需要理解这些参数才能正确使用它。

  • x, y 都包含类似数组的值,描述给定坐标的数据点。x 表示列坐标。相反,考虑到数据点位于网格上,y 表示坐标。
  • z 包含类似数组的值,它指定要使用给定数据点集内插的函数的值。
  • kind 指定要使用的插值类型。它可以是 linearcubicquintic。如果没有传递参数,则该值默认为 linear

以下代码使用 scipy.interpolate.interp2d() 在 Python 中实现双线性插值。

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

x = np.arange(-15.01, 15.01, 1.00)
y = np.arange(-15.01, 15.01, 1.00)
xx, yy = np.meshgrid(x, y)
z = np.cos(xx ** 2 + yy ** 2)
f = interpolate.interp2d(x, y, z, kind="quintic")
xnew = np.arange(-15.01, 15.01, 1e-2)
ynew = np.arange(-15.01, 15.01, 1e-2)
znew = f(xnew, ynew)
plt.plot(x, z[0, :], "ro-", xnew, znew[0, :], "b-")
plt.show()

输出:

Python 中的 Scipybilinear 插值

代码说明:

  • 所有三个基本库,即 SciPyNumPycMatPlotLib,都被导入到代码中。
  • 然后使用 numpy.arrange() 函数以数组的形式将值插入变量 x 和 y
  • 继续执行 meshgrid() 函数,该函数生成一个 1d 数组,其中 x 和 y 作为笛卡尔索引。
  • 然后,利用 cos() 函数求余弦值,该余弦值确定代码中的主函数 z 的值。
  • 最后,在 matplotlib 库函数的帮助下描述了结果。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Python 中的平滑数据

发布时间:2023/12/20 浏览次数:101 分类:Python

本教程演示了如何在 Python 中平滑图形中的曲线。Python 在数据分析和可视化方面有着广泛的应用。

Python 中捕获键盘中断错误

发布时间:2023/12/20 浏览次数:187 分类:Python

本教程讨论如何在 Python 中捕获 KeyboardInterrupt。当用户使用 Ctrl + C 或 Ctrl + Z 手动尝试停止正在运行的程序时,或在 Jupyter Notebook 的情况下通过中断内核

在 Python 中实现低通滤波器

发布时间:2023/12/20 浏览次数:101 分类:Python

本教程讨论如何在 python 中创建低通滤波器。低通滤波器是信号处理基础中的一个术语,经常用于过滤信号以获得更准确的结果。

在 Python 中解析日志文件

发布时间:2023/12/20 浏览次数:180 分类:Python

了解如何在 Python 中解析日志文件。日志文件包含有关在软件系统或应用程序运行期间发生的事件的信息。这些事件包括错误、用户提出的请求、Bug 等。

在 Python 中声明一个没有值的变量

发布时间:2023/12/20 浏览次数:94 分类:Python

在本教程中,我们将讨论如何在 Python 中声明一个变量而不赋值。变量是保留的内存位置,可以存储一些值。换句话说,Python 程序中的变量将数据提供给计算机以处理操作。

在 Python 中定义类全局变量

发布时间:2023/12/20 浏览次数:77 分类:Python

本教程演示了如何定义类全局变量。全局变量是一个可见变量,可以在程序的每个部分使用。全局变量也不在任何函数或方法中定义。

在 Python 中的 Lambda 函数中传递多个参数

发布时间:2023/12/20 浏览次数:133 分类:Python

了解如何在 Python 中的 Lambda 函数中传递多个参数。lambda 形式或 lambda 表达式是 Python 中的匿名函数。它们是可以使用 Python 中保留的 lambda 关键字创建的内联函数。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便