我正在分析循环拉伸试验的数据.输入使用大量的x和y值列表.为了描述材料是否硬化或软化,我需要得到每个循环回路的蓝色斜率.


获得斜坡的低点是儿童节,但是上层,这是挑战.

到目前为止,我已经采用了这种方法,在每个循环的局部最大值以下的几个点处切出循环,并从硬编号的点数中得出红线.的红线Aproximation被由poly1d(polyfit(x1,x2,1))与fsolve被使用,则得到的交点.但是它始终无法正常工作,因为点的分布并不总是相同的.

问题是如何正确定义两条(红色)相交线的间隔.在上图中有3个实验和平均斜率.我花了几天时间试图为每个循环找到4个最接近的点,决定这不是最好的方法.最后,我在stackowerflow结束了这里.
期望的输出是具有交叉点的近似坐标的列表 - 如果要播放,这里是曲线的数据(0,[[xvals],[yvals]]).Theese可以轻松阅读
import csv
import sys
csv. field_size_limit(sys.maxsize)
csvfile = 'data.csv'
tc_data = {}
for key, val in csv.reader(open(csvfile, "r")):
tc_data[key] = val
for key in tc_data:
tc = eval(tc_data[key])
x = tc[0]
y = tc[1]
Run Code Online (Sandbox Code Playgroud)