我正在尝试将savgol_filter
中的scipy
应用于信号的峰值。 signal.csv
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from scipy.signal import find_peaks, savgol_filter
df = pd.read_csv('signal.csv')
df.plot(grid = 1,
c = (0,0,255/255),
linewidth = 0.5,
figsize = (10,5),
legend = False,
xlim = [df.index[0], df.index[-1]])
plt.xlabel('Zeit / ms')
plt.ylabel('UHF-Signal / mV')
plt.title('UHF')
x = df.T.to_numpy()[1]
peaks, _ = find_peaks(x, distance = 150, height = 4)
##sgf = savgol_filter(peaks, 51, 3)
##plt.plot(sgf, c = 'orange')
plt.plot(peaks, x[peaks], 'o', c = 'red')
plt.show()
到目前为止,一切都很好。不幸的是,当我尝试应用savgol_filter
时,其表示法就打破了惯例。
sgf = savgol_filter(peaks, 51, 3)
plt.plot(sgf, c = 'orange')
有什么方法可以使滤波器创建一条穿过峰点的平滑线?