C语言正弦波程序(256点)
以下是一个用C语言生成256点正弦波数据的程序,并输出结果:

(图片来源网络,侵删)
#include <stdio.h>
#include <math.h>
#include <stdint.h>
#define PI 3.14159265358979323846
#define SAMPLES 256
int main() {
double sine_wave[SAMPLES];
double amplitude = 1.0; // 振幅
double frequency = 1.0; // 频率(周期数)
double sampling_rate = SAMPLES; // 采样率
// 生成正弦波数据
for (int i = 0; i < SAMPLES; i++) {
double angle = 2 * PI * frequency * i / sampling_rate;
sine_wave[i] = amplitude * sin(angle);
}
// 输出正弦波数据(十六进制格式)
printf("256点正弦波数据(16位整数,小端序):\n");
printf("{\n");
for (int i = 0; i < SAMPLES; i++) {
// 将浮点数转换为16位有符号整数
int16_t sample = (int16_t)(sine_wave[i] * 32767);
printf("0x%04X", sample);
// 格式化输出
if (i % 8 == 7) {
printf(",\n");
} else {
printf(", ");
}
}
printf("\n};\n");
return 0;
}
程序说明
-
参数设置:
SAMPLES定义为256,表示生成256个采样点- 振幅设为1.0,频率设为1.0(一个完整周期)
- 采样率设为256(与采样点数相同)
-
正弦波生成:
- 使用
sin()函数计算每个采样点的值 - 角度计算公式:
2π * frequency * i / sampling_rate
- 使用
-
数据输出:
- 将浮点数转换为16位有符号整数(范围-32768到32767)
- 以十六进制格式输出,每行8个数据点
- 输出格式适合直接复制到嵌入式系统或DSP代码中
输出示例
程序会输出类似以下格式的数据(前几行):

(图片来源网络,侵删)
256点正弦波数据(16位整数,小端序):
{
0x0000, 0x0800, 0x1000, 0x17FF, 0x1FFF, 0x27FF, 0x2FFF, 0x37FF,
0x3FFF, 0x47FF, 0x4FFF, 0x57FF, 0x5FFF, 0x67FF, 0x6FFF, 0x77FF,
...
0x0000, 0xF800, 0xF000, 0xE800, 0xE000, 0xD800, 0xD000, 0xC800,
0xC000, 0xB800, 0xB000, 0xA800, 0xA000, 0x9800, 0x9000, 0x8800,
...
};
扩展功能
如果需要更复杂的功能,可以考虑:
- 添加命令行参数控制振幅、频率等
- 将输出保存到文件
- 生成不同格式的输出(如十进制、浮点数等)
- 添加图形化显示功能
您可以根据具体需求修改此程序。

(图片来源网络,侵删)
