繁体   English   中英

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

[英]finding the interpolated intersection between two arrays in Python/Numpy/Scipy

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

例如,假设我们有两个数组y_1y_2 ,都认为它们是在xSupport上求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值。 在我的应用程序中,支持大于两个,因此我正在寻找一种与数组长度无关的方法。

数字化模拟信号的过程中 ,我创建了一个名为find_transition_times的函数。 您可以通过传递y_1 - y_2来传递y0来传递threshold来使用该函数:

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)

通过假设找到一个零,然后对两个序列的差执行函数,可以简化问题。 首先,“求解”查找发生符号过渡的位置(这意味着在两者之间的某个位置出现零),然后“插入”执行线性插值以查找解。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM