Python中的MATLAB interp2函数

2024-10-01 09:30:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要一个相当于interp2MATLAB函数的Python。我试图让这个MATLAB example在Python中工作,但是我做不到

import numpy as np

from scipy.interpolate import interp2d
from scipy.interpolate import RectBivariateSpline

service = np.array(range(10, 31, 10))
years = np.array(range(1950, 1991, 10))

wage = np.array([[150.6970,199.5920,187.6250],
    [179.3230, 195.0720, 250.2870],
    [203.2120, 179.0920, 322.7670],
    [226.5050, 153.7060, 426.7300],
    [249.6330, 120.2810, 598.2430]])

ip = RectBivariateSpline(years, service, wage)

print(ip(15, 1975))

但我得到了这个错误(在RectBivariateSpline中),我无法解决:

^{pr2}$

Tags: 函数fromimportipservicenprangescipy
3条回答

蓝调,我认为你设置插值的方式,正确的结果将通过ip(1975, 15)而不是相反。在

我相信您需要调用ip来返回值,方法是使用以下行而不是打印行。在

print(ip.ev(15, 1975))

更新:

很容易调整。一直盯着我的脸。可以设置kx和ky的值,它们是二元样条曲线的度数See documentation here

不管怎样,只要将行调整为:

ip = RectBivariateSpline(years, service, wage, kx=2, ky=2)

如果你不想的话,你不需要调整kx。我怀疑如果你把kx保留为3,它会改变插值的很多。在

我也遇到过同样的问题,并且发现scipy.ndimage.map_coordinates和{}是一样的。请阅读这些命令的文档,以找出适用于您的案例的解决方案。在

在Matlab的Vq = interp2(V,Xq,Yq)中尝试此操作:

Vq = scipy.ndimage.map_coordinates(V, [Xq.ravel(), Yq.ravel()], order=3, mode='nearest').reshape(V.shape)

相关问题 更多 >