Döngüsel çekme testlerinden veri analiz ediyorum. Giriş olarak büyük x ve y değerlerinin listesi kullanılır. Malzemenin sertleşip yumuşamadığını açıklamak için, her devir döngüsünün mavi eğimini almam gerekir. Xy veri noktası grafiğinin tüm kesişim noktalarını uyuşturabilir misiniz?
yamacın alt noktası alınıyor çocuk festival, fakat üst bir, o meydan okumadır. Her döngünün yerel maksimum aşağıda birkaç puanla döngüler dışarı dilimleme ve kırmızı çizgiler yaparak bugüne kadar bu yaklaşımı yaptıkpuan sayımı hardnumbered. Kırmızı çizgilerin tahmini, poly1d(polyfit(x1,x2,1))
ve fsolve
ile kesişme noktasını elde etmek için kullanılır. Ancak, her zaman doğru şekilde çalışmaz, çünkü noktaların dağılımı her zaman aynı değildir.
sorun doğru kesişen çizgiler aralığını iki (kırmızı) tanımlar nasıl olup. Yukarıdaki resimde, ortalama eğim ile birlikte 3 deney bulunmaktadır. Her döngü için en yakın 4 noktayı bulmaya çalışarak birkaç gün geçirdim. Bu, en iyi yaklaşım değil. Ve son olarak, burada stackowerflow'ta bitti.
İstenen çıktı, kesişme noktalarının yaklaşık koordinatlarına sahip listedir - eğer oynamak istiyorsanız, here eğri için verilerdir (0, [[xvals], [yvals]]). Sayılan bu kolayca aynı x değerlerinde tüm hatların y-değerlerini yeniden örneklemek için SciPy gelen interp1d işlevini kullanarak çok basit bu yapabileceğini
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]
benim için çalışıyor. – gggg
Matplotlib –