import numpy as np import matplotlib.pyplot as plt from scipy.optimize import curve_fit #position plt.close('all') data=np.loadtxt('DATAA (1).txt',delimiter=',') t=data[:,0] x=data[:,1] t = t[130:790] x = x[130:790] plt.figure() plt.plot(t,x) plt.xlabel('time') plt.ylabel('position') max_val=max(x) max_i=list(x).index(max_val) #position up plt.figure() t_up=t[:max_i] x_up=x[:max_i] plt.plot(t_up,x_up,'r*') def fit1(t,v0,a1,x0): return x0+v0*t+0.5*a1*t**2 popt,pcov = curve_fit(fit1, t_up, x_up) plt.plot(t_up, fit1(t_up,*popt),'k', linewidth=2) #position down plt.figure() t_down=t[max_i:] x_down=x[max_i:] plt.plot(t_down,x_down,'r*') popt,pcov = curve_fit(fit1, t_down, x_down) plt.plot(t_down, fit1(t_down,*popt),'k', linewidth=2) #velocity n1=20 data=[] delta=t[1]-t[0] for i in range (n1,len(t)-n1): deri=(x[i+n1]-x[i-n1])/(2*n1*delta) data.append(deri) v=np.array(data) t= t[n1:-n1] plt.figure() plt.plot(t,v,'r*') #velocity up plt.figure() t_up=t[:max_i-n1] v_up=v[:max_i-n1] plt.plot(t_up,v_up,'r*') def fit2(t,v0,a): return v0+a*t popt,pcov = curve_fit(fit2, t_up, v_up) plt.plot(t_up, fit2(t_up,*popt),'k', linewidth=2) #velocity down plt.figure() t_down=t[max_i-n1:] v_down=v[max_i-n1:] plt.plot(t_down,v_down,'r*') popt,pcov = curve_fit(fit2, t_down, v_down) plt.plot(t_down, fit2(t_down,*popt),'k', linewidth=2) #acceleration n2=2 data2=[] for i in range (n2,len(v)-n2): deri=(v[i+n2]-v[i-n2])/(2*n2*delta) data2.append(deri) a=np.array(data2) t= t[n2:-n2] plt.figure() plt.plot(t,a,'r*') import statistics a_up_mean=statistics.mean(a[:max_i-n1-n2]) a_down_mean=statistics.mean(a[max_i-n1-n2:])出现这个错误ValueError: could not convert string to float: '0.008\t-1.2126E-4'
时间: 2023-07-14 14:14:20 浏览: 106
import numpy as np import matplotlib.pyplot as plt import math
这个错误通常是由于数据文件中某些值无法被正确转换为浮点数导致的。在你的代码中,你使用了 `loadtxt` 函数来加载数据文件,这个函数默认会尝试将每个值解析为浮点数。你可以通过打印数据文件的每一行来查找导致错误的行。你可以尝试使用 `np.genfromtxt` 函数来读取数据文件,这个函数可以更好地处理数据文件中的错误。例如,你可以使用以下代码替换 `loadtxt` 函数:
```
data = np.genfromtxt('DATAA (1).txt', delimiter='\t', skip_header=1)
```
这里我们使用了 `\t` 作为分隔符,并通过 `skip_header` 参数跳过了第一行。如果你的数据文件中还包含其他非浮点数的值(例如文本标签等),则你可能需要进一步处理这些值或跳过它们。
阅读全文