синусоида, которая медленно увеличивает частоту от f1 до f2 в течение заданного времени

Я пишу программу c для генерации синусоидальной волны, которая медленно увеличивает частоту от f1 до f2 в течение заданного временного интервала.

Я написал эту программу для повышения частоты от 0 до 10 Гц, но проблема в том, что частота изменяется после завершения 360 градусов. Если я пытаюсь изменить частоту между 0 и 360 градусами, то переход не будет плавным, и он будет резким.

Это уравнение грех, которое я использовал у = Амплитуда * грех (частота * фаза)

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;
}
How do I change frequency smoothly for a given time period? should I be looking into Fourier transformations?

Ответы на вопрос(4)

Ваш ответ на вопрос