2009-07-17 21 views
6

sin intervención del usuario, ¿cómo identificar un programa qué tipo de forma de onda está presente en una grabación de un ADC?Identificación de formas de onda periódicas comunes (cuadrados, seno, diente de sierra, ...)

Por el bien de esta pregunta: triángulo, cuadrado, sinusoidal, medio senoidal o ondas de dientes de sierra de frecuencia constante. El nivel y la frecuencia son arbitrarios, y tendrán ruido, pequeñas cantidades de distorsión y otras imperfecciones.

Various waveforms

me propongo algunas ideas (sin tratamiento previo), también, y usted puede v arriba o hacia abajo.

+1

¿puede usted, con confianza, asumir que la entrada es una señal monofónica? (es decir, ¿una sola nota jugada por una sola inserción?) – kent

+0

Sí. No tengo una aplicación particular en mente, pero estoy imaginando ondas periódicas continuas de una sola frecuencia. – endolith

Respuesta

7

que debe de empezar por tomar una autocorrelación para encontrar la fundamental.

Con eso, tome un período (aproximadamente) de la forma de onda.

Ahora tome una DFT de esa señal, e inmediatamente compense el cambio de fase de la primera bandeja (la primera bandeja es la fundamental, su tarea será más simple si todas las fases son relativas). Ahora normaliza todos los contenedores para que el fundamental tenga ganancia unitaria.

Ahora compare y contraste el resto de los bins (que representan los armónicos) frente a un conjunto de formas de onda previamente almacenadas que le interesa probar. Acepte el más cercano y rechace en general si no cumple con algún umbral de precisión determinado por las mediciones del piso de ruido.

+0

Tendría que hacer un seguimiento de ese cambio de fase, también, para identificar las diferentes polaridades de las olas, ¿verdad? – endolith

+0

De hecho. Eso será mucho más fácil si has compensado la fase de lo fundamental. –

+0

Sería mejor tomar la FFT de varios períodos de la onda, en cuanto al rechazo de ruido. – endolith

3

Realice una autocorrelación para encontrar la frecuencia fundamental, mida el nivel RMS, busque el primer cruce por cero y luego intente restar formas de onda comunes en esa frecuencia, fase y nivel. Lo que cancela los mejores (y más que algunos umbrales) gana.

+0

Creo que este es el enfoque más práctico, suponiendo que también varía la fase de las formas de onda de comparación. – MusiGenesis

+0

Puedes descubrir la fase encontrando un cruce por cero primero para no perder el tiempo desplazando las olas a cada fase posible. – endolith

4

Realice una FFT, encuentre los picos armónicos impares y pares, y compare la velocidad a la que disminuyen a una biblioteca de formas de onda comunes ... relaciones máximas ....

+0

Este método parece más robusto que trabajar en el dominio del tiempo, ya que aún se pueden identificar las ondas que han pasado por el cambio de fase y el filtrado. – endolith

0

armarse con más información ...

Estoy asumiendo que usted ya sabe que una onda sinusoidal perfecta teóricamente no tiene parciales armónicos (es decir, sólo una fundamentales) ... pero ya que usted está pasando por un ADC Puedes lanzar la idea de una onda sinusoidal teóricamente perfecta por la ventana ... tienes que luchar contra el aliasing y determinar qué son los parciales "reales" y cuáles son los artefactos ... buena suerte.

la siguiente información proviene de this link about csound.

(*) Una onda de diente de sierra contiene (teóricamente) un número infinito de parciales armónicos, cada uno en la proporción de la recíproca de la cantidad parcial. Por lo tanto, el fundamental (1) tiene una amplitud de 1, el segundo parcial 1/2, el tercero 1/3 y el nth 1/n.

(**) Una onda cuadrada contiene (teóricamente) un número infinito de parciales armónicos, pero solo armónicos impares (1,3,5,7, ...) Las amplitudes están en la relación del recíproco del número parcial, al igual que las ondas de diente de sierra. Por lo tanto, el fundamental (1) tiene una amplitud de 1, el tercero 1/3 parcial, el quinto 1/5 y el nth 1/n.

2

Esta respuesta presume que no hay ruido y que se trata de un ejercicio académico simple.

En el dominio del tiempo, tomar la muestra por diferencia de muestra de la forma de onda. Histograma de los resultados. Si la distribución tiene un pico (modo) claramente definido en cero, es una onda cuadrada.Si la distribución tiene un pico claramente definido en un valor positivo, es un diente de sierra. Si la distribución tiene dos picos bien definidos, uno negativo y uno positivo, es un triángulo. Si la distribución es amplia y tiene un pico en ambos lados, es una onda sinusoidal.

0

creo que todas estas respuestas hasta el momento son bastante malo (incluyendo la mía anterior ...) después de haber pensado que el problema a través de un poco más que sugeriría lo siguiente:

1) echar un 1 segunda muestra de la señal de entrada (no necesita ser tan grande, pero simplifica algunas cosas)

2) durante todo el segundo, cuente los pasos por cero. en este punto tiene los cps (ciclos por segundo) y conoce la frecuencia del oscilador. (en caso de que sea algo que quisiera saber)

3) ahora tome un segmento más pequeño de la muestra para trabajar con: tome exactamente 7 cruces cero. (De modo que su búfer de trabajo debe ahora, si se visualiza, parecerse a una de las representaciones gráficas que publicó con la pregunta original.) use este pequeño búfer de trabajo para realizar las siguientes pruebas. (La normalización del buffer de trabajo en este punto podría facilitar la vida)

4) prueba de onda cuadrada: los cruces por cero para una onda cuadrada son siempre diferencias muy grandes, busque un delta de señal grande seguido de poco o ningún movimiento hasta el próximo cruce por cero.

5) prueba para la onda de sierra: similar a la onda cuadrada, pero a una señal grande delta le seguirá una señal lineal constante delta.

6) prueba para onda triangular: delta lineal constante (pequeña) deltas. encuentre los picos, dividalos por la distancia entre ellos y calcule cómo se vería la onda triangular (idealmente) ahora pruebe la señal real para la desviación. establezca un umbral de tolerancia de desviación y puede determinar si está mirando un triángulo o un seno (o algo parabólico).

+1

Suponiendo que esto sea algo así como datos de audio reales, contar cero pasos no funcionará muy bien. Como señaló Dave Gamble, la autocorrelación es la mejor forma de determinar la frecuencia fundamental de una señal de audio. – MusiGenesis

+1

A menos que la señal sea realmente ruidosa, contar los cruces por cero debería funcionar. Sin embargo, sería mejor medir la distancia entre cruces por cero, arrojar cualquier valor atípico y promediar. – endolith

0

Primero encuentre la frecuencia base y la fase. Puedes hacer eso con FFT. Normaliza la muestra. Luego, reste cada muestra con la muestra de la forma de onda que desea probar (misma frecuencia y misma fase). Cuadre el resultado agréguelo todo y divídalo por el número de muestras. El número más pequeño es la forma de onda que buscas.

Cuestiones relacionadas