【问题标题】:Rectangular matrix interpolation with python用python进行矩形矩阵插值
【发布时间】:2021-05-31 03:32:49
【问题描述】:

我需要插值矩形矩阵,我尝试使用 scipy 的 interp2d 属性来做,但我有错误说我只能插值方阵:

ValueError: x and y must have equal lengths for non rectangular grid

那么,如何对矩形矩阵进行插值呢?我使用的代码(给出错误):

min, max = 0, 14
X = np.linspace(min, max, 720)
Y = np.linspace(min, max, 360)
x, y = np.meshgrid(X, Y, sparse=True)

f = interpolate.interp2d(x, y, matrix, kind='cubic')

X_new = np.linspace(min, max, 1440)
Y_new = np.linspace(min, max, 720)

final = f(X_new, Y_new)

【问题讨论】:

  • 对于您的final 矩阵,您还需要将X_newY_new 放入meshgrid

标签: python matrix scipy


【解决方案1】:

我不知道你的matrix 是什么,但我认为你需要先检查matrix 的形状。如果XY的长度与matrix的形状长度相同,则可以成功运行代码。要检查形状,您可以使用 print(matrix.shape)(确保您在 ndarray numpy 中有 matrix)。

这段代码一直在为我工作。

import numpy as np
from scipy import interpolate

min, max = 0, 14
X = np.linspace(min, max, 720)
Y = np.linspace(min, max, 360)
x, y = np.meshgrid(X, Y, sparse=True)
matrix = np.abs(x**2+y**2)

f = interpolate.interp2d(X, Y, matrix, kind='cubic')

X_new = np.linspace(min, max, 1440)
Y_new = np.linspace(min, max, 720)

final = f(X_new, Y_new)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-05
    • 2017-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-28
    相关资源
    最近更新 更多