Wie kann man mit SciPy / Numpy filtern / glätten?

Ich versuche, das von einem Druckwandler mit einer Abtastfrequenz von 50 kHz erhaltene Signal zu filtern / zu glätten. Ein Beispielsignal ist unten dargestellt:

Ich möchte ein glattes Signal erhalten, das von Löss in MATLAB erhalten wurde (ich zeichne nicht die gleichen Daten, Werte sind unterschiedlich).

Ich habe die spektrale Leistungsdichte mit Hilfe der psd () -Funktion von Matplotlib berechnet. Die spektrale Leistungsdichte wird auch im Folgenden angegeben:

Ich habe versucht, den folgenden Code zu verwenden und ein gefiltertes Signal erhalten:

import csv
import numpy as np
import matplotlib.pyplot as plt
import scipy as sp
from scipy.signal import butter, lfilter, freqz

def butter_lowpass(cutoff, fs, order=5):
    nyq = 0.5 * fs
    normal_cutoff = cutoff / nyq
    b, a = butter(order, normal_cutoff, btype='low', analog=False)
    return b, a

def butter_lowpass_filter(data, cutoff, fs, order=5):
    b, a = butter_lowpass(cutoff, fs, order=order)
    y = lfilter(b, a, data)
    return y

data = np.loadtxt('data.dat', skiprows=2, delimiter=',', unpack=True).transpose()
time = data[:,0]
pressure = data[:,1]
cutoff = 2000
fs = 50000
pressure_smooth = butter_lowpass_filter(pressure, cutoff, fs)

figure_pressure_trace = plt.figure(figsize=(5.15, 5.15))
figure_pressure_trace.clf()
plot_P_vs_t = plt.subplot(111)
plot_P_vs_t.plot(time, pressure, linewidth=1.0)
plot_P_vs_t.plot(time, pressure_smooth, linewidth=1.0)
plot_P_vs_t.set_ylabel('Pressure (bar)', labelpad=6)
plot_P_vs_t.set_xlabel('Time (ms)', labelpad=6)
plt.show()
plt.close()

Die Ausgabe, die ich erhalte, ist:

Ich brauche mehr Glättung, ich habe versucht, die Grenzfrequenz zu ändern, aber es können immer noch keine zufriedenstellenden Ergebnisse erzielt werden. Ich kann mit MATLAB nicht die gleiche Glätte erzielen. Ich bin mir sicher, dass dies in Python möglich ist, aber wie?

Sie können die Daten findenHie.

Aktualisiere

Ich habe Lowess Smoothing von Statistikmodellen angewendet, dies liefert auch keine zufriedenstellenden Ergebnisse.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage