C语言生成正弦波测试数据易懂版本

以往生成正弦波数据, 各个参数之间的关系总是不明确, 现在这个函数的代码非常明确的区分了各个参数之间的相互关系.

#include <stdio.h>
#include <math.h>/*** @brief 生成正弦波测试数据* * @param data 存放生成的数据的数组* @param n 数据的长度 一共采样了多少个点* @param sample_rate 采样率 (每秒多少个点)* @param amplitude 正弦波的振幅 * @param phase 正弦波的初始相位* @param frequency 正弦波的频率 
*/
void generateSinData(float data[], int n, float sample_rate , float amplitude, float phase, float frequency) {  float time_step = 1.0f / sample_rate; // 每个样本的时间间隔(秒)  float a; // 角度(弧度制)  float zaosheng; // 噪声项  // 可选:设置随机数种子以确保每次运行都得到不同的随机噪声  // std::srand(static_cast<unsigned int>(std::time(nullptr)));  for (int i = 0; i < n; i++) {  // 计算时间(秒),并转换为角度  float time = i * time_step;  a = 2 * PI * frequency * time + phase;  // 添加噪声项(如果需要的话)  // zaosheng = 0.1f * (static_cast<float>(std::rand()) / RAND_MAX - 0.5f);  zaosheng = 0; // 暂时设为0,如果你想添加噪声可以去掉注释  // 计算正弦波加上噪声  data[i] = amplitude * sin(a) + zaosheng;  }  
} #define N 2000int main() {float data[N];float amplitude = 44.0; // 初始振幅float phase = 0.5 * PI;  // 初始相位float frequency = 10.0; // 初始频率generateSinData(data, N, 1000.0f, amplitude, phase,frequency);//输出data到文件FILE *fp;fp = fopen("data.txt", "w");for (int i = 0; i < 1000; i++) {fprintf(fp, "%f\n", data[i]);}fclose(fp);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/16514.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

源码编译安装LAMP(安装apeche mysql php 论坛 网站 巨详细版)

目录 一.LAMP架构相关概述 1.各组件作用 Linux&#xff08;平台&#xff09; Apache&#xff08;前台&#xff09; MySQL&#xff08;后台&#xff09; PHP/Perl/Python&#xff08;中间连接&#xff09; 总结 二.编译安装Apache httpd服务 1.关闭防火墙&#xff0c;将…

解决SpringBoot中插入汉字变成?(一秒解决)

在这里url后面加一行配置即可&useUnicodetrue&characterEncodingUTF-8即可 解释 spring.datasource.url: 这里包含了数据库的URL&#xff0c;以及额外的参数如useUnicodetrue用于启用Unicode字符集支持&#xff0c;characterEncodingUTF-8用于指定字符编码为UTF-8&…

Java面向对象-常用类(Math类)

常用类-Math类 Math 类提供了一序列基本数学运算和几何函数的方法。 Math类是类&#xff0c;并且它的所有成员变量和成员方法都是静态的。 1 Math类的常量和常用方法 常量 static doubleE 比任何其他值都更接近 e&#xff08;即自然对数的底数&#xff09;的 double 值。stati…

什么是SPI,和API有啥区别

Java 中区分 API 和 SPI&#xff0c;通俗的讲&#xff1a;API 和 SPI 都是相对的概念&#xff0c;他们的差别只在语义上&#xff0c;API 直接被应用开发人员使用&#xff0c;SPI 被框架扩展人员使用。 API (Application Programming Interface) 定义: API是一组定义了软件组件…

图像处理ASIC设计方法 笔记24 等价表和标记代换

&#xff08;一&#xff09;等价表的整理与压缩 1.1 等价关系的识别与追踪 在初步标记过程完成后&#xff0c;等价表的整理和压缩变得至关重要。这一阶段的首要任务是从等价表的地址1开始&#xff0c;对等价表进行逐个扫描。在扫描过程中&#xff0c;系统将检查每个临时标记是否…

链表类型的无界阻塞线程安全队列-ConcurrentLinkedQueue(FIFO)

ConcurrentLinkedQueue是非阻塞线程安全(volatile不能完全保证线程安全)的队列,适用于“高并发”的场景。是一个基于链表节点的无界线程安全队列,按照 FIFO(先进先出,尾先进头先出)原则对元素进行排序。队列元素中不可以放置null元素(内部实现的特殊节点除外)。 volati…

【rust工具链】

1 查看正在使用的工具链 命令&#xff1a;rustup show 结果显示&#xff1a; 从图中可以看到正在使用的是rustc 1.76.0版本&#xff0c;也可以看到已安装的所有版本的工具链 2 使用默认工具链 命令&#xff1a;rustup default 版本号 例如&#xff1a;rustup default 1.58…

【重学C语言】十五、文件操作

【重学C语言】十五、文件操作 文件的概念什么是流文件类型文本文件和二进制文件的区别文件指针文件指针常量预定义的文件指针stdin (标准输入)stdout (标准输出)stderr (标准错误输出)示例文件指针的声明使用文件指针悬挂指针示例文件缓冲区为什么需要缓冲区?缓冲区的类型缓冲…

Python语言绘制好看的小提琴图、箱形图、散点图、山脊图和柱状图等等

废话不多说&#xff0c;今天给大家分享一个&#xff0c;使用python绘制小提琴图、箱形图、散点图、山脊图和柱状图等等 图中的数据是随机生成的&#xff0c;图例&#xff0c;图注以及坐标题目各种信息&#xff0c;具体内容大家可以自己修改~ 效果图如下所示 &#x1f447;&a…

AIGC时代算法工程师的面试秘籍(2024.4.29-5.12第十三式) |【三年面试五年模拟】

写在前面 【三年面试五年模拟】旨在整理&挖掘AI算法工程师在实习/校招/社招时所需的干货知识点与面试方法&#xff0c;力求让读者在获得心仪offer的同时&#xff0c;增强技术基本面。也欢迎大家提出宝贵的优化建议&#xff0c;一起交流学习&#x1f4aa; 欢迎大家关注Rocky…

『ZJUBCA Weekly Feed 07』MEV | AO超并行计算机 | Eigen layer AVS生态

一文读懂MEV&#xff1a;区块链的黑暗森林法则 01 &#x1f4a1;TL;DR 这篇文章介绍了区块链中的最大可提取价值&#xff08;MEV&#xff09;概念&#xff0c;MEV 让矿工和验证者通过抢先交易、尾随交易和三明治攻击等手段获利&#xff0c;但也导致网络拥堵和交易费用增加。为了…

ThreadPoolExecutor线程池使用以及源码解析

文章目录 1. 引子2. 线程池源码分析2.1. 总览2.2. Executor2.3. ExecutorService2.4. AbstractExecutorService2.5. ThreadPoolExecutor构造函数核心参数阻塞队列拒绝策略核心属性线程池状态Worker 类execute() 方法addWorker() 方法runWorker() 方法getTask() 方法processWork…

奇舞周刊第529期:万字长文入门前端全球化

周五快乐&#xff08;图片由midjourney生成&#xff09; 奇舞推荐 ■ ■ ■ 万字长文入门前端全球化 目前国内企业正积极开拓国际市场&#xff0c;国际化已成为重要的发展方向&#xff0c;因此产品设计和开发更需考虑国际化。本文介绍了语言标识、文字阅读顺序等诸多知识。然后…

Java面试题:Java中的并发集合有哪些?请举例说明它们的使用场景

Java中的并发集合是为多线程环境设计的&#xff0c;它们提供了线程安全的访问和操作。以下是Java中一些常见的并发集合及其使用场景&#xff1a; ConcurrentHashMap&#xff1a; 线程安全的HashMap实现。它通过将数据分布在多个段(segment)上&#xff0c;每个段单独加锁&#x…

ubuntu安装samba实现共享文件windows可查看ubuntu中的文件

samba的作用&#xff1a;实现共享linux/ubuntu系统中的文件&#xff0c;在windows直接查看操作ubuntu/linux中的文件、文件夹 1、安装samba sudo apt-get install samba如果不能安装samba&#xff0c;则更新apt-get sudo apt-get upgrade sudo apt-get update sudo apt-get d…

LeetCode热题100—链表(一)

160.相交链表 题目 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 。 图示两个链表在节点 c1 开始相交&#xff1a; 题目数据 保证 整个链式结构中不存在环。 注意&#x…

These relative modules were not found:* ../../../constant in

这个错误信息表明&#xff0c;你的项目在尝试加载一个相对路径模块 ../../../constant 时遇到了问题。具体来说&#xff0c;它在 ./node_modules/cache-loader/dist/cj 这个路径下找不到这个模块。 这里有几个可能的原因和相应的解决方案&#xff1a; 路径错误&#xff1a;首…

ts: 索引类型

一&#xff1a; 索引签名 索引签名用于定义对象类型&#xff0c;允许对象具有任意数量的属性&#xff0c;但属性名的类型必须是字符串&#xff08;在大多数情况下&#xff09;或数字&#xff08;在某些特定的上下文中&#xff0c;如数组或类似数组的对象&#xff09;。索引签名…

CHFS数据区县码(最全版本)

CHFS数据区县码&#xff08;最全版本&#xff09; CHFS数据区县码&#xff08;2011-2019年&#xff09;&#xff0c;数据真实可用&#xff0c;并可赠送chfs2011-2019年公开数据。

【Unity2D 2022:Cinemachine】相机跟随与地图边界

一、导入Cinemachine工具包 1. 点击Window-Package Manager&#xff0c;进入包管理界面 2. 点击All&#xff0c;找到Cinemachine工具包&#xff0c;点击Install 二、相机跟随角色 1. 选中Main Camera&#xff0c;点击Component-Cinemachine-CinemachineBrain&#xff0c;新建…