Estoy escribiendo un programa c para generar una onda sinusoidal que aumenta lentamente la frecuencia de f1 a f2 durante un intervalo de tiempo determinado.onda sinusoidal que ralentiza lentamente la frecuencia de f1 a f2 durante un tiempo determinado
He escrito este programa c para aumentar la frecuencia de 0 a 10 Hz pero el problema es que la frecuencia cambia después de completar 360 grados. Si trato de cambiar la frecuencia entre 0 y 360 grados, la transición no es suave y es abrupta.
Ésta es la ecuación del pecado que he utilizado y = Amplitud * sen (* frec fase)
int main(int argc, char *argv[]) {
double y, freq,phase;
int count; // for convenience of plotting in matlab so all the waves are spread on x axis.
for (freq = 0; freq < 10; freq+=1) {
for (phase = 0; phase < 360; phase++) { // phase is 360 degrees
y = 3 * sin((count*6.283185)+(freq*(phase*(3.14159/180))));
printf("%f %f %f \n", freq, phase, y);
}
count++;
}
return EXIT_SUCCESS;
}
- ¿Cómo cambio de frecuencia sin problemas durante un período de tiempo determinado?
- ¿Debería investigar las transformaciones de Fourier?
Para generar una frecuencia de onda de pecado "real" de los contadores y temporizadores de uso de Hz deseado. Usando la fórmula sin, la frecuencia generada depende de la velocidad a la que se ejecuta el programa. – katta