Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python上升/下降沿示波器式触发器_Python_Numpy_Edge Detection - Fatal编程技术网

Python上升/下降沿示波器式触发器

Python上升/下降沿示波器式触发器,python,numpy,edge-detection,Python,Numpy,Edge Detection,我试图根据触发值检测numpy向量中的上升和/或下降边缘。这有点像示波器触发的工作原理 numpy向量包含浮点值。触发器本身是一个浮点值。我希望这样做能够奏效: import numpy as np data = np.array([-1, -0.5, 0, 0.5, 1, 1.5, 2]) trigger = rising_edge(data, 0.3) print(trigger) [3] 换句话说,它的工作原理类似于np.where,返回一个包含条件为真的位置的向量 我知道我可以简单地

我试图根据触发值检测numpy向量中的上升和/或下降边缘。这有点像示波器触发的工作原理

numpy向量包含浮点值。触发器本身是一个浮点值。我希望这样做能够奏效:

import numpy as np
data = np.array([-1, -0.5, 0, 0.5, 1, 1.5, 2])
trigger = rising_edge(data, 0.3)
print(trigger)

[3]
换句话说,它的工作原理类似于
np.where
,返回一个包含条件为真的位置的向量

我知道我可以简单地在向量上迭代,得到相同的结果(这就是我正在做的),但它并不理想,正如你所想象的那样。numpy中是否内置了一些功能,可以使用优化的C代码实现这一点?或者在其他图书馆


谢谢。

我们可以一次性切片
,并与小于和大于的触发器进行比较,就像这样-

In [41]: data = np.array([-1, -0.5, 0, 0.5, 1, 1.5, 2, 0, 0.5])

In [43]: trigger_val = 0.3

In [44]: np.flatnonzero((data[:-1] < trigger_val) & (data[1:] > trigger_val))+1
Out[44]: array([3, 8])

data=np.array([-1,-0.5,0,0.5,1,1.5,2,0,0.5])的预期输出是什么。i、 e.如果有不止一个这样的步骤触发该值?对于0.3的触发值,与之前一样,我希望
[3,8]
这很聪明。既然我也想做下降沿(只需要交换较大/较小的符号),你能把它添加到你的答案中吗?谢谢,但有个问题。如果触发器值在数组中,则此操作失败。例如,0.5。@Cris如文章中所述:
如果您还想包括相等,即=
。如果数据是熊猫数据帧的一部分,只需转换为numpy数组:
np.flatnonzero((np.array(data['column'][:-1])trigger\val))+1
In [75]: data = np.array([-1, -0.5, 0, 0.5, 1, 1.5, 2, 0.5, 0])

In [76]: trigger_val = 0.3

In [77]: mask1 = (data[:-1] < trigger_val) & (data[1:] > trigger_val)

In [78]: mask2 = (data[:-1] > trigger_val) & (data[1:] < trigger_val)

In [79]: np.flatnonzero(mask1 | mask2)+1
Out[79]: array([3, 8])