Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.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 - Fatal编程技术网

Python 遍历列表以查找起点和终点

Python 遍历列表以查找起点和终点,python,Python,z和x是两个列表,包含传感器读数和每个传感器读数的相应时间。从这两个列表中,我需要找到传感器读数的起点(传感器值开始不断变化)和终点(传感器值停止不断变化)。在这里,我遍历列表并减去连续的值,试图通过向后遍历列表来确定起点和几乎类似的逻辑来找到终点。但由于传感器读数中几乎没有噪音,因此每次输出都不正确。我在这里附上了图表,从图表中可以看出,起始位置和结束位置有偏差(+/-30 mm)。有没有比这更好的方法,比如使用微分或其他概念来获得imp的起始和结束读数?任何链接或概念概述都将对我有所帮助

z和x是两个列表,包含传感器读数和每个传感器读数的相应时间。从这两个列表中,我需要找到传感器读数的起点(传感器值开始不断变化)和终点(传感器值停止不断变化)。在这里,我遍历列表并减去连续的值,试图通过向后遍历列表来确定起点和几乎类似的逻辑来找到终点。但由于传感器读数中几乎没有噪音,因此每次输出都不正确。我在这里附上了图表,从图表中可以看出,起始位置和结束位置有偏差(+/-30 mm)。有没有比这更好的方法,比如使用微分或其他概念来获得imp的起始和结束读数?任何链接或概念概述都将对我有所帮助

def最小距离(self,z,x):
计数=0
i=0
当计数=1时:
计数+=1
i+=1
最小值=z[i+2]
最小时间=x[i+2]
返回最小值,最小时间
def最大_距离(自身、z、x):
计数=0
j=5
当计数=1.5时:
计数+=1
j+=1
最大值=z[-j+15]
最大时间=x[-j+15]
返回最大值、最大时间

您需要确定什么级别的变化是“噪音”,什么级别的变化需要检测为“变化读数”。然后,在遍历列表查看差异时,可以使用该阈值。如果您发现程序仍在检测“噪音”,那么您的阈值是错误的问题是,很难在这里找到噪音级别(它每次都会改变)。我想知道是否有更好的方法代替重复我的列表,比如使用微分或其他概念。这一切取决于你的情况。有很多事情你可以考虑-信号总是会有变化,还是打算检测它的存在?变化总是相同的高度吗?多少噪音就是太多?如果有变化,你希望它做什么,但是噪音太大,以至于它的强度与信号的变化相同?我是一个初学者,很抱歉,很难跟上你。你能告诉我有没有其他方法可以用来找到起点和终点,而不考虑噪音。可能有很多方法,但你仍然需要回答我刚才问的问题
def min_distance(self, z, x):


    count = 0
    i =  0
    while count<2 and (i+1) !=len(z):
        if abs(z[i] - z[i+1]) >= 1:  
            count += 1
        i+=1

    min_value = z[i+2] 
    min_time = x[i+2]

    return min_value,min_time




 def max_distance(self,z,x):

    count = 0
    j =  5
    while count<2 and j!=len(z):
        if (abs(z[-j] - z[-j-5]) - abs(z[-j] - z[-j+2])) >=1.5 :
            count +=1
        j+=1

    max_value = z[-j+15]
    max_time = x[-j+15]

    return max_value,max_time