Implementieren einen Hochpassfilter mit Python

Vaibhav Vaibhav 8 April 2022
Implementieren einen Hochpassfilter mit Python

Ein Hochpassfilter ist ein Filter, der die Bewegung von Signalen beschränkt, die niedriger als eine vordefinierte Schwellenfrequenz oder eine Grenzfrequenz sind. Das Signal mit Frequenzen größer oder gleich dem Schwellwert passiert den Filter ungehindert. Diese Aktion dämpft Signale mit niedrigen Frequenzen. Ein Hochpassfilter filtert unerwünschte Geräusche wie Geräusche heraus.

In diesem Artikel lernen wir, wie man einen Hochpassfilter mit Python implementiert.

Implementieren Sie einen Hochpassfilter mit Python

Die Implementierung des Hochpassfilters verwendet 4 Python-Module, nämlich numpy, pandas, scipy und matplotlib.

Das numpy-Modul ist ein robustes Python-Modul, das reich an Hilfsprogrammen für die Arbeit mit großen mehrdimensionalen Matrizen und Arrays ist. Diese Dienstprogramme helfen bei der nahtlosen Durchführung sowohl komplexer als auch einfacher mathematischer Operationen über Matrizen. Diese Dienstprogramme sind optimiert und hochdynamisch für die Eingaben.

Um die neueste Version des numpy-Moduls zu installieren, verwenden Sie einen der folgenden pip-Befehle.

pip install numpy
pip3 install numpy

Das pandas-Modul ist ein leistungsstarkes und flexibles Open-Source-Datenanalyse- und Datenmanipulationsmodul, das in Python geschrieben ist.

Um das Modul pandas zu installieren, verwenden Sie einen der folgenden pip-Befehle.

pip install pandas
pip3 install pandas

Das Modul scipy ist ein Open-Source-Python-Modul für wissenschaftliches und technisches Rechnen.

Um das scipy-Modul zu installieren, verwenden Sie einen der folgenden pip-Befehle.

pip install scipy
pip3 install scipy

Und das Modul matplotlib ist eine umfassende und optimierte Python-Bibliothek zur grafischen Visualisierung von Daten.

Um die neueste Version des matplotlib-Moduls zu installieren, verwenden Sie einen der folgenden pip-Befehle.

pip install matplotlib
pip3 install matplotlib

Nachdem wir nun mit einer kurzen Einführung in die Bibliotheken fertig sind, schauen wir uns den Python-Code für den Hochpassfilter an.

import numpy as np
import pandas as pd
from scipy import signal
import matplotlib.pyplot as plt


def sine_generator(fs, sinefreq, duration):
    T = duration
    n = fs * T
    w = 2.0 * np.pi * sinefreq
    t_sine = np.linspace(0, T, n, endpoint=False)
    y_sine = np.sin(w * t_sine)
    result = pd.DataFrame({"data": y_sine}, index=t_sine)
    return result


def butter_highpass(cutoff, fs, order=5):
    nyq = 0.5 * fs
    normal_cutoff = cutoff / nyq
    b, a = signal.butter(order, normal_cutoff, btype="high", analog=False)
    return b, a


def butter_highpass_filter(data, cutoff, fs, order=5):
    b, a = butter_highpass(cutoff, fs, order=order)
    y = signal.filtfilt(b, a, data)
    return y


fps = 30
sine_fq = 10
duration = 10
sine_5Hz = sine_generator(fps, sine_fq, duration)
sine_fq = 1
duration = 10
sine_1Hz = sine_generator(fps, sine_fq, duration)
sine = sine_5Hz + sine_1Hz
filtered_sine = butter_highpass_filter(sine.data, 10, fps)
plt.figure(figsize=(20, 10))
plt.subplot(211)
plt.plot(range(len(sine)), sine)
plt.title("Generated Signal")
plt.subplot(212)
plt.plot(range(len(filtered_sine)), filtered_sine)
plt.title("Filtered Signal")
plt.show()

Python-Hochpassfilter

Im obigen Code sollte die Sinusfrequenz oder der sine_fq-Wert in Hertz oder Hz und die Dauer oder duration in Sekunden oder sec angegeben werden. Das erzeugte Signal ist das ursprüngliche Signal, und das gefilterte Signal ist das Signal, das aufgrund des Hochpassfilters gebildet wird. Das generierte Diagramm zeigt die Unterschiede zwischen den beiden.

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.