从scipy.interpolate导入样条线导入matplotlib.pyplot作为plt导入numpy作为np导入sys
filename = sys.argv[1]
I take data from a file, y=time,x=distance
load it into 2 numpy arrays x and y
x,y=np.loadtxt(filename, delimiter=',', unpack=True)
dydx=np.zeros([1,len(x)],dtype = float)
zero = np.array(np.zeros(5))
xdiff = np.array([0,len(x)-1],dtype = float)
ydiff = np.array([0,len(x)-1],dtype = float)
xdiff = np.diff(x)
ydiff = np.diff(y)
dydx = np.divide(np.diff(x),np.diff(y))
plt.ylabel("Velocity")
plt.xlabel("Time")
a = np.linspace(y[0],y[len(y)-1],len(y))
dydx = np.append(dydx, zero[0])我得到的图仍然是尖锐的,不平滑的。
这是我做的一些事情,以平滑情节,但没有奏效,仍然尖锐
a_smooth = np.linspace(a.min(),a.max(),len(y))
dydx_smooth = spline(a,dydx,a_smooth)这是正常的绘图过程
plt.plot(a_smooth,dydx_smooth)
plt.grid()
plt.show()

我试着使用splrev,splrep,但结不是不减的,dydx不断地上下浮动,所以不能使用。我在youtube的视频中看到了这个技巧,它对他有效,但对我不起作用。https://www.youtube.com/watch?v=uSB8UBrbMfk
您可以从此处https://pastebin.com/44Kn2sm5获取我的输入数据
发布于 2018-06-08 16:21:55
您可以通过pandas以一种非常简单方便的方式过滤数据。
我无法访问您的在线数据存储,所以我自己制作了一些样本数据,如果可以的话…
import pandas as pd
x = np.linspace(0,25000,1000)
y = np.sin(np.linspace(0,25*np.pi,1000))*(1.2+np.cos(np.arange(-200,800)/45/4/2))+np.random.random(1000)
df = pd.DataFrame({'y': y}, index=x)
plt.plot(df)
plt.plot(df, label='raw data')
plt.plot(df.rolling(10, Center=True).mean(), label='filtered by rolling mean size 10')
plt.legend()

https://stackoverflow.com/questions/50750146
复制相似问题