我正在编写 ac 程序来生成一个正弦波,该正弦波在给定的时间间隔内将频率从 f1 缓慢上升到 f2。
我已经编写了这个 c 程序来将频率从 0 提升到 10 Hz,但问题是完成 360 度后频率会发生变化。如果我尝试在 0 到 360 度之间更改频率,则过渡不平滑且突然。
这是我使用的等式 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;
}
- 如何在给定的时间段内平稳地更改频率?
- 我应该研究傅立叶变换吗?