在python中是等价的



是否有Scipy或Numpy函数在python中执行dsearchnMATLAB命令的工作?

dsearchn返回给定向量中与输入值最近的值的索引。

效率近似相等的方法可能是scipy的KDTree或更好的cKDTree:

from scipy.spatial import KDTree
kdt = KDTree(P.T)
kdt.query(PQ.T)

这里PPQdsearch文档中的点和查询点。MATLAB使用第一维作为点的维数,而scipy使用最后一维,因此是转置。

与MATLAB方法不同,这是在一个步骤中完成的,使用KDTree分两步完成:首先构建树对象,然后在其上运行query

你可以这样做:

x = np.array([1.1, 1.2, 1.22, 1.4])
v  = 1.21
def dsearchnn(x, v):
return np.where(np.abs(x-v) == np.abs(x-v).min())[0]
dsearchnn(x, v)
array([1,2])

对于x和v都是向量:

def dsearchn(x, v):
z=np.atleast_2d(x)-np.atleast_2d(v).T
return np.where(np.abs(z).T==np.abs(z).min(axis=1))[0]

最新更新