La tarea de identificar picos surge en diversas aplicaciones, que van desde encontrar picos en Fourier transformaciones (FFT) para extraer picos de matrices 2D. Un desafío común es distinguir los picos verdaderos de las fluctuaciones inducidas por el ruido.
En lugar de implementar un algoritmo de búsqueda de picos desde cero, considere utilizar scipy Función .signal.find_peaks. Esta función proporciona opciones para filtrar e identificar picos según criterios específicos.
Para aprovechar el poder de find_peaks de manera efectiva, es fundamental comprender sus parámetros:
De todos los parámetros, prominence destaca como el más eficaz para distinguir los picos verdaderos del ruido. Su definición implica el descenso vertical mínimo requerido para alcanzar un pico más alto.
Para ilustrar su utilidad, considere una sinusoide variable en frecuencia contaminada con ruido. La solución ideal sería identificar los picos con precisión sin sucumbir a picos de ruido falsos.
El siguiente código demuestra cómo utilizar la función find_peaks con varias combinaciones de parámetros:
import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import find_peaks
# Generate signal
x = np.sin(2*np.pi*(2**np.linspace(2,10,1000))*np.arange(1000)/48000) np.random.normal(0, 1, 1000) * 0.15
# Find peaks using different parameters
peaks, _ = find_peaks(x, distance=20)
peaks2, _ = find_peaks(x, prominence=1)
peaks3, _ = find_peaks(x, width=20)
peaks4, _ = find_peaks(x, threshold=0.4)
# Plot results
plt.subplot(2, 2, 1)
plt.plot(peaks, x[peaks], "xr"); plt.plot(x); plt.legend(['distance'])
plt.subplot(2, 2, 2)
plt.plot(peaks2, x[peaks2], "ob"); plt.plot(x); plt.legend(['prominence'])
plt.subplot(2, 2, 3)
plt.plot(peaks3, x[peaks3], "vg"); plt.plot(x); plt.legend(['width'])
plt.subplot(2, 2, 4)
plt.plot(peaks4, x[peaks4], "xk"); plt.plot(x); plt.legend(['threshold'])
plt.show()
Como se observa en los resultados, el uso de la prominencia (la línea azul en el segundo subgráfico) aísla efectivamente los picos verdaderos, mientras que la distancia, el ancho y el umbral ofrecen un rendimiento inferior en presencia de ruido.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3