Cómo detectar picos en MATLAB (En 7 Pasos)

Por chris daniels
Cómo detectar picos en MATLAB (En 7 Pasos)
NA/AbleStock.com/Getty Images

MATLAB es un paquete de software técnico que puede usarse para procesar y analizar señales. Un procedimiento común en el análisis de señales es la detección de picos, o el encontrar el máximo local (valores más grandes que los puntos de información adyacente dentro de una señal ruidosa). Es necesario, por lo general, limitar la detección de picos a la máxima local de una cierta anchura (duración cuando la señal está en el dominio del tiempo), así como cierta altura o magnitud.

Paso 1

Define una fuente de información importando datos en MATLAB. Por ejemplo, crea una onda senoidal con ruido aleatorio:

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

Paso 2

Encuentra picos en tu señal usando el método de interpolación cuadrática de "findpeaks():"

[peak_value, peak_location] = findpeaks(my_signal);

Paso 3

Busca picos de una altura mínima usando el parámetro "minpeakheight". La altura es un escalar de valor real que se refiere al valor mínimo de datos de los picos permitidos:

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

Paso 4

Busca picos separados por una distancia mínima usando el parámetro "minpeakdistance". El valor es el número mínimo de índices entre picos en el vector "my_signal" y debe de ser un entero:

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

Paso 5

Busca solo picos sobre cierto límite usando el parámetro "Threshold" (Límite). Esta es una escala de valor real que se refiere a la diferencia mínima permitida entre el pico y los puntos de información adyacente:

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

Paso 6

Encuentra solo un número de picos usando el parámetro "npeaks". El valor debe de ser un entero:

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

Paso 7

Arregla la lista devuelta de picos usando el parámetro "sortsr". Los valores permitidos son "ascend" (ascender), "descend" (descender) y "none" (ninguno):

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