Cómo detectar picos en MATLAB

MATLAB es un paquete de software técnico que se puede utilizar para el procesamiento y análisis de señales. Un procedimiento común en el análisis de señales es la detección de picos o encontrar máximos locales (valores mayores que los puntos de datos adyacentes) dentro de una señal ruidosa. Por lo general, es necesario limitar la detección de picos a los máximos locales de un cierto ancho (duración cuando la señal está en el dominio del tiempo), así como a una cierta altura o magnitud.

Paso 1

Defina una fuente de datos importando datos en MATLAB. Por ejemplo, cree una onda sinusoidal con ruido aleatorio:

mi_señal = sin (0: 0.1: 10) + rand (1,101);

Paso 2

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

[valor_pico, ubicación_picos] = findpeaks (my_signal);

Paso 3

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

[valor_pico, ubicación_picos] = findpeaks (my_signal, 'minpeakheight', 2.5);

Paso 4

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

[valor_pico, ubicación_picos] = findpeaks (my_signal, 'minpeakdistance', 5);

Paso 5

Busque solo picos por encima de un cierto umbral utilizando el parámetro "umbral". Este es un escalar de valor real que se refiere a la diferencia mínima permitida entre los puntos de datos pico y adyacentes:

[valor_pico, ubicación_picos] = findpeaks (my_signal, 'umbral', 0.5);

Paso 6

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

[valor_pico, ubicación_picos] = findpeaks (my_signal, 'npeaks', 5);

Ordene la lista de picos devuelta utilizando el parámetro "sortstr". Los valores permitidos son "ascender", "descender" y "ninguno":

[valor_pico, ubicación_picos] = findpeaks (my_signal, 'sortstr', 'ascend');