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