Hur man upptäcker topp i MATLAB

MATLAB är ett tekniskt mjukvarupaket som kan användas för signalbehandling och analys. Ett vanligt förfarande vid signalanalys är toppdetektering eller att hitta lokala maxima - värden som är större än intilliggande datapunkter - inom en bullrig signal. Det är vanligtvis nödvändigt att begränsa toppdetektering till lokala maxima av en viss bredd - varaktighet när signalen är i tidsdomänen - samt en viss höjd eller storlek.

Steg 1

Definiera en datakälla genom att importera data till MATLAB. Skapa till exempel en sinusvåg med slumpmässigt brus:

my_signal = sin (0: 0.1: 10) + rand (1.101);

Steg 2

Hitta toppar i din signal med den kvadratiska interpoleringsmetoden "findpeaks ()":

[peak_value, peak_location] = findpeaks (my_signal);

Steg 3

Sök efter toppar av minsta höjd med parametern "minpeakheight". Höjden är en verkligt värderad skalar som hänvisar till det minsta datavärdet för tillåtna toppar:

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

Steg 4

Sök efter toppar åtskilda av ett minsta avstånd med parametern "minpeakdistance". Värdet är det minsta antalet index mellan topparna i "my_signal" -vektorn och måste vara ett heltal:

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

Steg 5

Sök bara efter toppar över en viss tröskel med parametern "tröskel". Detta är en verkligt värderad skalär som refererar till den minsta tillåtna skillnaden mellan topp- och intilliggande datapunkter:

[peak_value, peak_location] = findpeaks (min_signal, 'tröskel', 0,5);

Steg 6

Hitta bara ett visst antal toppar med parametern "npeaks". Värdet måste vara ett heltal:

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

Sortera den returnerade topplistan med parametern "sortstr". Tillåtna värden är "ascend", "descend" och "none":

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