Estoy buscando una clasificación amplia sobre los tipos de técnicas disponibles. Algo que puedo usar para comenzar una encuesta de literatura.
Algunos detalles:
debería ser factible para la implementación en tiempo real.
Decisión binaria, debería poder ingresar la señal continuamente, y el algoritmo debe detectar los tiempos de inicio y parada de la sinusoide en la forma de onda.
No hay otra señal, es decir, si la sinusoide no está presente, solo habrá ruido
la entrada está limitada en la banda, y la sinusoide, si está presente, se asegura de estar dentro de esa banda.
Las compensaciones son entre velocidad (qué tan pronto después de la aparición de la sinusoide puede el algo detectar su presencia) y falsos positivos (debe ser mínimo)
- No puedo proporcionar números exactos sobre medidas de rendimiento aceptables, porque no estoy seguro de mí mismo. Tengo la intención de implementar todas sus sugerencias para mi aplicación y descubrirlo por mí mismo. Solo estoy buscando las técnicas "estándar" para abordar este problema.
Más detalles:
La entrada es la salida de un filtro de paso de banda, por lo que el ruido también es significativo solo en la banda de paso.
No hay certeza de cuándo puede aparecer la sinusoide. La duración de la sinusoide está en el rango de 50-100 ms. Las amplitudes de la sinusoide fluctuarán.
Respuestas:
Dependiendo de la frecuencia de muestreo, funcionará una FFT (Transformada rápida de Fourier). Por ejemplo, si su frecuencia de muestreo es solo una vez cada 20 ms, solo obtendrá algunas muestras de la sinusoide, pero si está muestreando cada 0.5 ms, obtendrá muchas más muestras. Los FFT generalmente funcionan mejor con una gran cantidad de muestras para promediar. En ese caso, incluso si su señal es la suma de algunas sinusoides, se pueden determinar con precisión.
Alternativamente, puede echar un vistazo al algoritmo MUSIC . No estoy muy seguro de los detalles de cómo se implementa, pero se ha implementado en varios escenarios de detección en tiempo real. Una alternativa a MUSIC es el algoritmo Esprit .
Aún así, si el tamaño de su muestra es lo suficientemente grande y el ruido no inunda la señal por completo, entonces un FFT será (en promedio) la opción más rápida.
fuente
Una forma de detectar una sinusoide es usar el algoritmo de Goertzel . Rick Lyons da una buena reseña aquí sobre cómo usarlo para la detección .
Ese segundo enlace tiene esta ecuación para filtrar su señal entrante y calcular la "estadística de decisión":
fuente
Todo depende de SNR. Cuanto más baja sea la SNR, más procesamiento tendrá que hacer para separar la señal del ruido. He resuelto un problema similar en el pasado, donde estaba buscando una señal sinusoidal intermitente y baja SNR en un rango bastante amplio de frecuencias. Esto es lo que funcionó para mí:
Como otros han recomendado, experimenté con el algoritmo MUSIC para separar la señal del ruido. Para mi problema, fue ligeramente mejor para encontrar señales candidatas de SNR bajas que la FFT, pero dado que la carga computacional era mucho más alta (y mi algoritmo se estaba ejecutando en un DSP de punto fijo débil) opté por no usarlo. Era más fácil simplemente establecer el umbral de detección más bajo con la FFT, detectar picos más espurios y eliminarlos en la etapa de filtrado coincidente. La detección de baja SNR puede ser un poco oscura, pero si conoce lo suficiente sobre su sistema, puede detectar de manera confiable señales con una amplitud más baja que los niveles de ruido ambiental. Todo depende de la información que conozca sobre su sistema que pueda explotar.
fuente
Propondría lo siguiente:
1. Organice una ventana deslizante que sea lo suficientemente ancha como para contener toda la banda de la señal (al menos varios períodos de la señal de frecuencia más baja)
2. Realice una FFT de muestras que están actualmente dentro de una ventana, obtenga Un espectro de potencia de él.
3. Recorte el espectro con los límites de banda conocidos.
4. Clasifique los valores restantes del espectro de potencia en orden decreciente. Como el ruido es gaussiano, el espectro de ruido sería medio plano dentro de la banda, y si el pitido monotónico estuviera presente en la ventana, produciría la (s) espiga (s).
5. Identifique el ancho de banda de pico típico. Tome las muestras de mayor amplitud de un espectro de potencia recortado, obtenga un promedio. Esa sería la energía potencial "bip".
6. También obtenga un promedio de las muestras de banda restantes, que sería la energía del ruido.
7. Calcule una relación de energías obtenidas en (5) y (6). Si la proporción excede el umbral dado, establezca el indicador que indica que se encuentra el pitido. Si no, establezca la bandera de que actualmente no hay pitido.
8. Deslice la ventana al siguiente cuadro (muestra por muestra o por algún paso más grande).
fuente
Este es un problema de estadísticas. Si puede caracterizar el ruido, puede buscar características particulares de su señal de interés cuya probabilidad esté por debajo de alguna probabilidad (su tasa de error falso positivo requerida) para aparecer aleatoriamente en el ruido.
Si conoce la duración mínima de su sinusoide de interés (digamos 50 mS), puede intentar ventanas FFT deslizantes superpuestas de la duración de esa duración y buscar picos espectrales por encima de un umbral calculado al caracterizar el ruido. Si el mismo pico sobre el piso de ruido aparece en múltiples ventanas FFT sucesivas, entonces la longitud de la sinusoide podría corresponder más, dependiendo de la longitud y superposición de su marco FFT.
fuente