Sinuswelle, die die Frequenz für eine bestimmte Zeit langsam von f1 auf f2 erhöht

Ich schreibe ein c-Programm, um eine Sinuswelle zu erzeugen, die die Frequenz für ein bestimmtes Zeitintervall langsam von f1 auf f2 erhöht.

Ich habe dieses c-Programm geschrieben, um die Frequenz von 0 auf 10 Hz zu erhöhen, aber das Problem ist, dass sich die Frequenz nach Beendigung von 360 Grad ändert. Wenn ich versuche, die Frequenz zwischen 0 und 360 Grad zu ändern, ist der Übergang nicht glatt und es ist abrupt.

Dies ist die Gleichung der Sünde, die ich verwendet habe y = Amplitude * sin (Frequenz * Phase)

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;
}
Wie ändere ich die Frequenz für einen bestimmten Zeitraum reibungslos?soll ich mich mit Fourier-Transformationen befassen?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage