Tengo muestras discretas de una señal sísmica y [ n ] :
Quiero encontrar máximos locales en la señal.
- ¿Cómo encuentro máximos usando la interpolación?
- ¿Qué forma de interpolación debo usar?
Como puede ver, mi señal no es muy ruidosa, sin embargo, sería bueno si el método también filtrara un poco para que los máximos excedan un umbral y tengan un cierto ancho (sin picos).
Sin embargo, mi mayor problema es encontrar picos entre muestras. ¿Alguna sugerencia para una buena manera de hacer esto?
Gracias de antemano por cualquier respuesta!
Respuestas:
Obtener una resolución de submuestra
Una solución muy barata (en términos de tamaño de código) es simplemente muestrear su señal. En matlab, esto se puede hacer con
interp(y ,ratio)
. Una solución un poco más complicada consiste en detectar picos ingenuamente; y para cada pico, ajustando una parábola a través de y [pico - 1], y [pico], y [pico + 1]; luego usando el punto en el cual esta parábola es máxima como la verdadera posición de pico.En cuanto a la detección de picos
Un montón de técnicas que ayudan:
Todo esto se puede implementar de manera muy eficiente en Matlab con unos pocos pasos de nlfilter.
fuente
Pruebe con un detector de pico con pérdida:
donde "a" es un número menor que 1 que controla qué tan rápido se descompone el detector. Determina qué tan cerca pueden estar los picos vecinos sin suavizarse en uno solo. Luego haga una detección de umbral.
fuente