Convertir una onda sinusoidal en una onda triangular

programación


Por razones, no puedo simplemente generar una onda triangular de la frecuencia que necesito, pero tengo una onda sinusoidal y una onda cuadrada en esa frecuencia.

No puedo mantener un estado adicional.

Necesito un algoritmo para calcular una onda triangular a partir de una onda sinusoidal o una onda cuadrada

Onda triangular – HandWiki[^]

Esto contiene formalismos matemáticos, pero no entiendo los formalismos matemáticos.

Esperaba que alguien pudiera aplicar los conceptos relevantes contenidos allí a algún código. No me importa el idioma, siempre que sea portátil a otra cosa.

Lo que he probado:

Intenté generar la onda triangular por sí sola, pero necesito generarla en fragmentos a la vez y mantener la fase continua entre fragmentos para no recibir clics. Tengo una onda sinusoidal que rastrea usando un número entero cada vez mayor multiplicado por un valor delta basado en la frecuencia, pero eso no es un movimiento hacia arriba y hacia abajo; es más como un diente de sierra si le aplico un módulo, pero nuevamente, Necesito el triangulo.

Solución 2

Si tienes una onda cuadrada cuya amplitud y período conoces, ¿no puedes simplemente crear la onda triangular a partir de ella usando geometría simple?
Onda triangular – HandWiki[^]

Si el punto de inicio del ascenso del TW está sincronizado con el ascenso del SW, entonces todo lo que está haciendo es dibujar la diagonal de BL a TR, luego de TL a BR, lo cual es trivial y debería ser rápido y eficiente en cuanto a espacio.

Si la sincronización es “escalonada” según el diagrama del enlace, entonces ese es solo un punto de inicio desplazado que debe tener en cuenta: nuevamente, geometría simple.

Solución 1

De Wikipedia:

Es posible aproximar una onda triangular con síntesis aditiva sumando los armónicos impares de la fundamental mientras se multiplica cada dos armónicos impares por −1 (o, de manera equivalente, cambiando su fase por π) y multiplicando la amplitud de los armónicos por uno sobre el cuadrado. de su número de modo, norte (que equivale a uno sobre el cuadrado de su frecuencia relativa a la fundamental).

Se trata de un algoritmo sencillo y el artículo dice que converge en una onda triangular con bastante rapidez. (EDITAR: La fundamental es la onda sinusoidal, pero probablemente ya lo sepas.)

Solución 4

Probablemente optaría por un enfoque basado en tablas.
Simplemente almacenando los valores de la función que desea sobre el dominio de interés.
Por lo general, esto produce la ejecución más rápida sin problemas de tiempo, a expensas de algo de espacio de almacenamiento.

コメント

タイトルとURLをコピーしました