C语言正弦波程序256如何实现?

99ANYc3cd6
预计阅读时长 7 分钟
位置: 首页 C语言 正文

C语言正弦波程序(256点)

以下是一个用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;
}

程序说明

  1. 参数设置

    • SAMPLES 定义为256,表示生成256个采样点
    • 振幅设为1.0,频率设为1.0(一个完整周期)
    • 采样率设为256(与采样点数相同)
  2. 正弦波生成

    • 使用sin()函数计算每个采样点的值
    • 角度计算公式:2π * frequency * i / sampling_rate
  3. 数据输出

    • 将浮点数转换为16位有符号整数(范围-32768到32767)
    • 以十六进制格式输出,每行8个数据点
    • 输出格式适合直接复制到嵌入式系统或DSP代码中

输出示例

程序会输出类似以下格式的数据(前几行):

c语言正弦波程序256
(图片来源网络,侵删)
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,
...
};

扩展功能

如果需要更复杂的功能,可以考虑:

  1. 添加命令行参数控制振幅、频率等
  2. 将输出保存到文件
  3. 生成不同格式的输出(如十进制、浮点数等)
  4. 添加图形化显示功能

您可以根据具体需求修改此程序。

c语言正弦波程序256
(图片来源网络,侵删)
-- 展开阅读全文 --
头像
织梦关键词设置步骤是什么?
« 上一篇 04-25
dede图片瀑布流模板如何实现?
下一篇 » 04-25

相关文章

取消
微信二维码
支付宝二维码

目录[+]