So erkennen Sie Peaks in MATLAB

MATLAB ist ein technisches Softwarepaket, das zur Signalverarbeitung und -analyse verwendet werden kann. Ein übliches Verfahren bei der Signalanalyse ist die Spitzenerkennung oder das Finden lokaler Maxima – Werte, die größer als benachbarte Datenpunkte sind – innerhalb eines verrauschten Signals. Es ist normalerweise notwendig, die Spitzenerkennung auf lokale Maxima einer bestimmten Breite – Dauer, wenn sich das Signal im Zeitbereich befindet – sowie einer bestimmten Höhe oder Größe zu begrenzen.

Schritt 1

Definieren Sie eine Datenquelle, indem Sie Daten in MATLAB importieren. Erstellen Sie beispielsweise eine Sinuswelle mit zufälligem Rauschen:

mein_signal = sin(0:0,1:10) + rand(1,101);

Schritt 2

Finden Sie Spitzen in Ihrem Signal mit der quadratischen Interpolationsmethode von "findpeaks()":

[peak_value, peak_location] = findpeaks(my_signal);

Schritt 3

Suchen Sie mit dem Parameter "minpeakheight" nach Peaks mit einer minimalen Höhe. Die Höhe ist ein reellwertiger Skalar, der sich auf den minimalen Datenwert der zulässigen Peaks bezieht:

[peak_value, peak_location] = findpeaks(my_signal,'minpeakheight',2.5);

Schritt 4

Suchen Sie mit dem Parameter "minpeakdistance" nach Peaks, die durch einen Mindestabstand getrennt sind. Der Wert ist die minimale Anzahl von Indizes zwischen Spitzen im Vektor "my_signal" und muss eine ganze Zahl sein:

[peak_value, peak_location] = findpeaks(my_signal,'minpeakdistance',5);

Schritt 5

Suchen Sie mit dem Parameter "threshold" nur nach Peaks über einem bestimmten Schwellenwert. Dies ist ein reellwertiger Skalar, der sich auf die minimal zulässige Differenz zwischen Spitzenwert und benachbarten Datenpunkten bezieht:

[peak_value, peak_location] = findpeaks(my_signal,'threshold',0.5);

Schritt 6

Finden Sie mit dem Parameter "npeaks" nur eine bestimmte Anzahl von Peaks. Der Wert muss eine ganze Zahl sein:

[peak_value, peak_location] = findpeaks(my_signal,'npeaks',5);

Sortieren Sie die zurückgegebene Peakliste mit dem Parameter "sortstr". Zulässige Werte sind "ascend", "descend" und "none":

[peak_value, peak_location] = findpeaks(my_signal,'sortstr','ascend');