生成一个正弦波表,范围0-4095,存放在uint16_t Sin[128]中,并打印出来
时间: 2024-10-23 18:11:41 浏览: 10
为了生成一个正弦波表并存储在`uint16_t Sin[128]`数组中,我们可以采用公式计算每个索引位置对应的一个正弦值。然后将这些数值转换成16位无符号整数类型。这里我们假设使用的是π/128的角度精度。
```cpp
#include <math.h>
#include <stdio.h>
int main() {
const int N = 128; // 正弦波表大小
uint16_t Sin[N]; // 存储正弦波的数组
// 初始化数组,从0开始
for (int i = 0; i < N; i++) {
float angle_in_radians = static_cast<float>(i) * M_PI / 128;
double sin_value = sin(angle_in_radians);
// 将浮点数sin_value转换成16位无符号整数
Sin[i] = static_cast<uint16_t>(round(sin_value * ((1 << 16) - 1))); // 保证在uint16_t范围内
}
// 打印正弦波表
printf("Sin Array (0-4095):\n");
for (int i = 0; i < N; i++) {
printf("%d ", Sin[i]);
}
printf("\n");
return 0;
}
```
运行上述代码后,会得到一个范围在0-4095之间的正弦波表,并将其打印出来。注意,由于浮点数到整数的转换可能存在舍入误差,实际结果可能不会完全均匀分布。
阅读全文