随机频率幅值不变且每个周期都是完整的三角波 C语言
时间: 2024-04-12 14:26:40 浏览: 59
可以使用循环和条件语句来生成随机频率不变、幅值不变且每个周期都是完整的三角波。以下是一个示例的 C 代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define SAMPLE_RATE 44100 // 采样率
#define DURATION 1.0 // 波形持续时间(秒)
#define AMPLITUDE 1.0 // 波形振幅
int main() {
int numSamples = SAMPLE_RATE * DURATION;
double *waveform = (double *)malloc(sizeof(double) * numSamples);
if (waveform == NULL) {
printf("内存分配失败!\n");
return 1;
}
double phase = 0.0;
double freq = 440.0; // 初始频率为440Hz,可以根据需要进行调整
for (int i = 0; i < numSamples; i++) {
waveform[i] = AMPLITUDE * (2.0 * fabs(phase) - 1.0); // 生成三角波
phase += freq / SAMPLE_RATE;
if (phase >= 1.0) {
phase -= 2.0;
}
}
// 将波形数据写入文件或进行其他处理
free(waveform);***
阅读全文