将savgol_filter应用于信号峰值

时间:2019-08-05 17:16:52

标签: python-3.x matplotlib scipy signals signal-processing

我正在尝试将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()

enter image description here

到目前为止,一切都很好。不幸的是,当我尝试应用savgol_filter时,其表示法就打破了惯例。

sgf = savgol_filter(peaks, 51, 3)
plt.plot(sgf, c = 'orange')

enter image description here

有什么方法可以使滤波器创建一条穿过峰点的平滑线?

0 个答案:

没有答案