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');