在Python/Numpy/Scipy中查找两个数组之间的插值交集

2024-10-03 13:18:38 发布

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

我正在寻找一个简单的方法来寻找两个纽比数组之间的插值交集。我知道,如果我们有两个函数句柄,而不是两个数组,就可以简单地实现这一点,如使用Scipy或Sympy的thislink所示。我想做同样的事情,但是给定两个数组,特别是在线性样条曲线之间,这是通过直线连接数组条目而得到的。在

例如,假设我们有两个数组,y_1和{},这两个数组都在xSupport处求值。在

import numpy as np
xSupport = np.array([0,1])
y_1 = np.array([0,2])
y_2 = np.array([1,0])

我在寻找返回1/3的函数,它是这两条线相交处的x值。在我的应用程序中,支持大于2,所以我正在寻找一种独立于数组长度的方法。在


Tags: 方法函数np线性scipy数组句柄事情
2条回答

Digitizing an analog signal中,我创建了一个名为find_transition_times的函数。您可以通过传递y_1 - y_2表示y和传递{}表示{}来使用该函数:

In [5]: xSupport = np.array([0,1])
   ...: y_1 = np.array([0,2])
   ...: y_2 = np.array([1,0])
   ...: 

In [6]: find_transition_times(xSupport, y_1 - y_2, 0)
Out[6]: array([ 0.33333333])

与ser的回答一样:

import numpy as np
x = np.array([0,1])
y1 = np.array([0,2])
y2 = np.array([1,0])

def solve(f,x):
    s = np.sign(f)
    z = np.where(s == 0)[0]
    if z:
        return z
    else:
        s = s[0:-1] + s[1:]
        z = np.where(s == 0)[0]
        return z

def interp(f,x,z):
    m = (f[z+1] - f[z]) / (x[z+1] - x[z])
    return x[z] - f[z]/m

f = y1-y2
z = solve(f,x)
ans = interp(f,x,z)

print(ans)

这个问题可以简化为假设你找到了一个零,然后对两个级数的差执行函数。首先,“solve”找到符号转换的位置(意味着在这两者之间的某个地方出现了零),然后“interp”执行线性插值来找到解决方案。在

相关问题 更多 >