Я пишу программу c для генерации синусоидальной волны, которая медленно нарастает частоту от f1 до f2 в течение заданного интервала времени.
Я написал эту программу на c для увеличения частоты от 0 до 10 Гц, но проблема в том, что частота изменяется после завершения 360 градусов. Если я попытаюсь изменить частоту от 0 до 360 градусов, переход будет не плавным, а резким.
Это уравнение sin, которое я использовал y = Amplitude * sin (freq * 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;
}
- Как плавно изменить частоту в течение заданного периода времени?
- я должен искать преобразования Фурье?