viernes, 7 de julio de 2017

GENERACIÓN SIMPLE DE ONDAS EN PYTHON (Y SCIPY)

Fuente: hackaday.com

[153Armstrong] hizo un breve post sobre lo fácil que es generar formas de onda utilizando Python. Estamos de acuerdo en que es simple, pero en realidad, no es tanto Python per se, es algunas bibliotecas muy guay (SciPy, en particular) que hacen todo el trabajo duro. Que puede ser la división de pelos, pero no vale la pena nada que SciPy (pronunciado "Sigh Pie") también hace otros trucos útiles como Fourier transforma, también. Usted puede ver un video de sus resultados, a continuación.

El código es simple y uno de los comentaristas señaló una manera aún más eficiente de escribir los datos en un archivo WAV. La idea básica es crear una matriz de muestras en un búfer utilizando algunas funciones del componente NumPy de SciPy.


La mayoría de las formas de onda regulares son fáciles de crear usando un algoritmo. Por ejemplo, las ondas senoidales se pueden describir generalmente como: y=amplitude * sine(radian_frequency*t+phase_shift)

Donde "y" es el valor de la onda en el tiempo "t". La amplitud es el valor de pico (de modo que 5 le dará +/- 5 V) y la frecuencia de radian es el doble del valor de pi veces la frecuencia en Hertz. [153Armstrong] muestra fórmulas simples para ondas senoidales, ondas cuadradas simétricas y asimétricas, y una onda de diente de sierra, utilizando generadores proporcionados por el paquete SciPy. El código está en GitHub y también enlaza con los generadores disponibles en SciPy.

Hemos visto SciPy en algunas entradas del concurso Hackaday anteriores. Se puede pensar en él como Matlab para Python. Sólo tenga en cuenta, no es una parte inherente de Python. Si utiliza otro idioma, podría utilizar una biblioteca similar para obtener el mismo efecto. Y si lo estás haciendo en hardware, probablemente querrás usar tablas de búsqueda, para mantener las cosas rápidas y sencillas.

No hay comentarios:

Publicar un comentario