我正在使用 .csv 文件中的 10,000 个数据点,需要将常数函数拟合到两个特定范围(此处为时间),以便我可以平均它们的 y 截距并从数据的 y 值中减去这个案例)。
我的合身度 range1fit 和 range2fit 显然尺寸为 1,当我尝试绘制趋势线时出现尺寸错误,因为我试图绘制的元素之间存在尺寸差异。
这是我的完整代码:
import numpy as np
import pandas
import matplotlib.pyplot as plt
import scipy.stats as sps
# r1: run 1, r2: run 2, etc
r1 = pandas.read_csv("9Vrun1.csv")
r2 = pandas.read_csv("9Vrun2.csv")
r3 = pandas.read_csv("9Vrun3.csv")
r4 = pandas.read_csv("9Vrun4.csv")
r5 = pandas.read_csv("9Vrun5.csv")
r = (r1 + r2 + r3 + r4 +r5)/5
time = r["TIME"]
voltage = r["CH1"]
n = 10E3 # number of recordings per sec
# ranges on flat areas either side of the peak
range1t = time[time.between(-0.0572061,0.016112)]
range1v = voltage[time.between(-0.0572061,0.016112)]
range2t = time[time.between(0.0737799,0.142302)]
range2v = voltage[time.between(0.0737799,0.142302)]
# fit ranges with constant lines
range1fit = np.polyfit(range1t,range1v,0)
range2fit = np.polyfit(range2t,range2v,0)
plt.plot(time, voltage)
plt.plot(range1t, range1fit)
plt.plot(range2t, range2fit)
plt.title('Voltage vs. Time with Target (power supply range: [-9.0, 9.0 V])' )
plt.xlabel('Time (s)')
plt.ylabel('Voltage (V)')
plt.show()
任何有关如何进行的建议将不胜感激!