find_peaks_cwt#
- scipy.signal.find_peaks_cwt(vector, widths, wavelet=None, max_distances=None, gap_thresh=None, min_length=None, min_snr=1, noise_perc=10, window_size=None)[Quelle]#
Findet Spitzen in einem 1D-Array mittels Wavelet-Transformation.
Der allgemeine Ansatz besteht darin, vector durch Faltung mit wavelet(width) für jede Breite in widths zu glätten. Relative Maxima, die auf genügend Größenskalen und mit ausreichend hohem SNR auftreten, werden akzeptiert.
- Parameter:
- vectorndarray
1D-Array, in dem die Spitzen gesucht werden sollen.
- widthsfloat oder Sequenz
Einzelne Breite oder 1D-Array-ähnliche Liste von Breiten zur Berechnung der CWT-Matrix. Im Allgemeinen sollte dieser Bereich die erwartete Breite der interessierenden Spitzen abdecken.
- waveletcallable, optional
Soll zwei Parameter entgegennehmen und ein 1D-Array zurückgeben, das mit vector gefaltet wird. Der erste Parameter bestimmt die Anzahl der Punkte des zurückgegebenen Wavelet-Arrays, der zweite Parameter ist die Skala (width) des Wavelets. Sollte normalisiert und symmetrisch sein. Standardmäßig wird das Ricker-Wavelet verwendet.
- max_distancesndarray, optional
In jeder Zeile wird eine Gratlinie nur dann verbunden, wenn das relative Maximum in row[n] innerhalb von
max_distances[n]vom relativen Maximum inrow[n+1]liegt. Der Standardwert istwidths/4.- gap_threshfloat, optional
Wenn innerhalb von max_distances kein relatives Maximum gefunden wird, entsteht eine Lücke. Eine Gratlinie wird unterbrochen, wenn mehr als gap_thresh Punkte vorhanden sind, ohne dass ein neues relatives Maximum verbunden wurde. Der Standardwert ist der erste Wert des Breiten-Arrays, d. h. widths[0].
- min_lengthint, optional
Minimale Länge, die eine Gratlinie haben muss, um akzeptiert zu werden. Der Standardwert ist
cwt.shape[0] / 4, d. h. 1/4 der Anzahl der Breiten.- min_snrfloat, optional
Minimales SNR-Verhältnis. Standardwert ist 1. Das Signal ist der maximale CWT-Koeffizient auf der größten Gratlinie. Das Rauschen ist das noise_perc-te Perzentil der Datenpunkte, die innerhalb derselben Gratlinie liegen.
- noise_percfloat, optional
Beim Berechnen des Rauschbodens das Perzentil der betrachteten Datenpunkte, unterhalb dessen das Rauschen berücksichtigt wird. Berechnet mit stats.scoreatpercentile. Standardwert ist 10.
- window_sizeint, optional
Größe des Fensters, das zur Berechnung des Rauschbodens verwendet wird. Der Standardwert ist
cwt.shape[1] / 20.
- Rückgabe:
- peaks_indicesndarray
Indizes der Positionen in vector, an denen Spitzen gefunden wurden. Die Liste ist sortiert.
Siehe auch
find_peaksFindet Spitzen in einem Signal basierend auf Gipfeleigenschaften.
Hinweise
Dieser Ansatz wurde für die Suche nach scharfen Spitzen in verrauschten Daten entwickelt. Mit entsprechender Parameterauswahl sollte er jedoch auch für andere Peak-Formen gut funktionieren.
- Der Algorithmus lautet wie folgt:
Führen Sie eine kontinuierliche Wavelet-Transformation auf vector für die angegebenen widths durch. Dies ist eine Faltung von vector mit wavelet(width) für jede Breite in widths. Siehe cwt.
Identifizieren Sie „Gratlinien“ in der CWT-Matrix. Dies sind relative Maxima in jeder Zeile, die über benachbarte Zeilen verbunden sind. Siehe identify_ridge_lines.
Filtern Sie die Gratlinien mit filter_ridge_lines.
Hinzugefügt in Version 0.11.0.
Referenzen
[1]Bioinformatics (2006) 22 (17): 2059-2065. DOI:10.1093/bioinformatics/btl355
Beispiele
>>> import numpy as np >>> from scipy import signal >>> xs = np.arange(0, np.pi, 0.05) >>> data = np.sin(xs) >>> peakind = signal.find_peaks_cwt(data, np.arange(1,10)) >>> peakind, xs[peakind], data[peakind] ([32], array([ 1.6]), array([ 0.9995736]))