随机频率三角波 C语言
时间: 2023-08-03 21:02:07 浏览: 199
你可以使用 C 语言编写一个生成随机频率三角波的程序。下面是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#define SAMPLE_RATE 44100
#define DURATION 5
int main() {
srand(time(NULL));
int numSamples = SAMPLE_RATE * DURATION;
double* waveform = (double*)malloc(numSamples * sizeof(double));
double frequency = rand() % 1000 + 100; // 随机生成频率(100-1000 Hz)
double amplitude = 1.0; // 振幅为1
for (int i = 0; i < numSamples; i++) {
double t = (double)i / SAMPLE_RATE;
waveform[i] = amplitude * (2 * fabs(2 * fmod(t * frequency, 1.0) - 1) - 1);
}
FILE* fp = fopen("output.raw", "wb");
fwrite(waveform, sizeof(double), numSamples, fp);
fclose(fp);
free(waveform);
return 0;
}
```
这个程序使用 `rand()` 函数生成随机频率(100-1000 Hz)的三角波,并将波形数据写入一个二进制文件 "output.raw" 中。你可以使用音频编辑软件或音频库来播放或处理这个文件。
请注意,这只是一个简单的示例,实际应用中可能需要更复杂的算法或参数调整来生成所需的随机频率三角波。
阅读全文