用C语言写一个波形表的函数,波形为三角波和正弦波的叠加,要求三角波和正弦波的频率、相位相同,三角波的幅值设为Um2,正弦波的幅值设为Um1
时间: 2023-05-28 15:06:35 浏览: 205
C语言实现三角函数表
#include <math.h>
#define PI 3.14159265358979323846
void waveform(double *table, int length, double Um1, double Um2, double freq) {
double phase = 0.0; // 初始相位为0
double delta_phase = freq / length * 2 * PI; // 每个采样点的相位增量
int i;
for (i = 0; i < length; i++) {
double sin_value = Um1 * sin(phase);
double triangle_value = Um2 * (2 * (phase / (2 * PI) - floor(phase / (2 * PI) + 0.5)));
// 三角波公式为2*(t/T-floor(t/T+0.5)),其中t为相位,T为周期
table[i] = sin_value + triangle_value;
phase += delta_phase; // 更新相位
}
}
阅读全文