C语言生成常见波形数据

news2024/11/13 15:45:13

最近无聊,研究上C语言的一些程序,感觉波形生成还是挺有用的

这里主要生成了正弦,方波,三角波 ,锯齿波,指数波形等

首先看看效果,

这里把生成的数据用python画了出来,程序在最后

正弦,调用参数

wave_gen(1000,10,100,sin);

波形长度1000个(1s),频率10hz,幅值100,类型为sin

方波,调用参数

wave_gen(1000,5,0.1,squ);

波形长度1000,频率5hz,占空比10%,类型为方波

锯齿波,调用参数

wave_gen(1000,5,0.1,saw);

波形长度1000(ms),频率5hz,斜率0.1(相对于时间ms而言),波形类型为锯齿波

三角波,调用参数

wave_gen(1000,5,10,tri);

波形长度1000ms,频率5hz,斜率10(相对于时间ms而言),波形类型为三角波,其实也就是特殊的锯齿波

x/2的积分,即x^2指数函数

调用参数wave_gen(1000,5,2,inte);

波形长度1000,频率5hz,2次幂,积分(指数)波形

剩下的一些波形还有点问题,就不演示了

贴下代码

#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "math.h"

#define PI 3.14159265
float *ydata,*xdata;
#define sin 0 //正弦 
#define squ 1 //方波 
#define saw 2 //锯齿波 
#define tri 3 //三角波 
#define inte 4 //积分 x^2 
#define diff 5
#define gauss 6 // 高斯白噪声 
void wave_gen(int len,float fre,float rate,char type){//生成波形长度ms,波形频率 ,波形参数,波形类型 
	int i,wave_cnt=0,wave_sw_value=1000/fre;
	ydata = (float *)malloc(sizeof(float)*len);
	xdata = (float *)malloc(sizeof(float)*len);
	for(i=0;i<len;i++){
		if(wave_cnt>=wave_sw_value) wave_cnt=0;
		switch(type){
			case sin:
				ydata[i] =  rate*sinf(2*wave_cnt*PI/wave_sw_value);
				break;
			case squ:
				ydata[i] =  wave_cnt < rate*wave_sw_value ? 1:0;	
				break;
			case saw:
				ydata[i] =  rate*wave_cnt;			
				break;
			case tri:
				ydata[i] =  rate*(wave_cnt>wave_sw_value/2 ? wave_sw_value-wave_cnt: wave_cnt);	
				break;
			case inte:
			    ydata[i] =  (pow(wave_cnt,rate));	
				break; 
			case diff:
				ydata[i] =  2*wave_cnt;	
				break;
			case gauss:
				ydata[i] = (20.0 / (10 * sqrt(2.0 * 3.14159))) * exp(-((wave_cnt/1.0 - 10) * (wave_cnt/1.0 - 10)) / (2.0 * 10 * 10));
				break;
		}
		xdata[i] = i;
		wave_cnt++;
	}
	
}
int main(){
	int i=0;
	wave_gen(1000,5,2,inte);
	for(i=0;i<1000;i++){
		printf("%.2f,",ydata[i]);
	}
	return 0;
}

同时也上传仓库了:opencaneve: 开源STM32HAL ESP8266 ESP32 python Android Windows把我学习到的以及找到的可以用的代码分享出来python记录打卡信息 ESP32蓝牙鼠标 开源windows串口助手 - Gitee.com

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

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

相关文章

适合母亲节的SVG模版

宝藏模版 往期推荐&#xff08;点击阅读&#xff09;&#xff1a; 趣味效果&#xff5c;高大上&#xff5c;可爱风&#xff5c;年终总结&#xff08;一&#xff09;&#xff5c;年终总结&#xff08;二&#xff09;&#xff5c;循环特效&#xff5c;情人节&#xff08;一&…

[Datawhale AI 夏令营]多模态大模型数据合成赛事-Task2

简单按照datawhale给的task2的文档学习了一下,主要还是学习了Data-Juicer相关的知识。 1.Data-juicer 初探 简单理解一下&#xff0c;Data juicer就是提供给你许多数据处理方法&#xff0c;包括Formatter、Mapper、Filter、Deduplicator和Selector&#xff0c;涉及图像、文本、…

73、 dockerfile

一、dockerfile 自定义镜像---------通过docker创建镜像。 1.1、创建镜像的方式&#xff1a; 1、dockerfile最基的方式&#xff0c;最常用的方式。 2、docker pull 拉取的是最基础的镜像&#xff0c;只有基础功能&#xff0c;没有定制化的功能。 3、基于基础镜像&#xff…

每天五分钟计算机视觉:人脸识别如何解决一次学习的问题?

本文重点 人脸识别技术作为当前计算机技术的重要分支,广泛应用于公共安全、智能家居、金融商业等多个领域。然而,尽管该技术取得了显著进展,但在实际应用中仍面临诸多挑战,其中一次学习问题(One-Shot Learning Problem)尤为突出。 一次学习问题的定义 我们人类是具有快…

单元训练01:LED指示灯的基本控制

蓝桥杯 小蜜蜂 单元训练01&#xff1a;LED指示灯的基本控制 #include "stc15f2k60s2.h" #include <intrins.h>#define LED(x) \{ \P2 P2 & 0x1f | 0x80; \P0 x; \P2 & 0x1f; \}…

用Python实现9大回归算法详解——04. 多项式回归算法

多项式回归 是线性回归的一种扩展&#xff0c;它通过将输入特征的多项式项&#xff08;如平方、立方等&#xff09;引入模型中&#xff0c;以捕捉数据中非线性的关系。虽然多项式回归属于线性模型的范畴&#xff0c;但它通过增加特征的多项式形式&#xff0c;使得模型能够拟合非…

python-NLP:4句法分析

文章目录 句法分析概述句法分析分类句法分析任务 句法结构分析基本概念语法形式化基本方法 依存句法分析浅层句法分析 句法分析概述 句法分析(syntacticparsing)是自然语言处理中的关键技术之一&#xff0c;其基本任务是确定句子的句法结构(syntactic structure)或句子中词汇之…

华三超融合服务器硬件监控指标解读

随着信息技术的快速发展&#xff0c;超融合服务器因其高效、灵活的特点&#xff0c;在企业IT架构中扮演着越来越重要的a角色。华三&#xff08;H3C&#xff09;作为业界知名的网络设备供应商&#xff0c;其超融合服务器产品在市场上广受欢迎。 为了确保这些服务器的稳定运行&am…

asp.net core 调用wps实现word转pdf

安装wps https://www.wps.cn/ 创建.net core控制项目 添加com引用&#xff0c;搜索wps 准备word&#xff0c;名字叫001.docx word转pdf 编写代码 namespace WPSStu01 {internal class Program{static void Main(string[] args){Console.WriteLine("转化开始&q…

JAVA maven pom下载失败问题处理

如果直接在IDEA编辑器中中下载pom依赖 下载失败,可以直接去官网下载jar依赖包(也可以用其他方式,比如找同事拷贝等最终目的是本地需要这个包) 官网点击地址跳转 搜索你需要的包点击进入下载界面 选择对应的版本进行下载 () 下载界面中有对应的当前包的pom坐标个当前jar包 坐…

163邮箱注销后不能再注册

网易邮箱注销后不能再注册 一个手机号只能注册15个163邮箱 再注册会报异常 申请注销邮箱要等15天&#xff0c;才是永久注销 永久注销邮箱后&#xff0c;在拿这个手机号注册新邮箱&#xff0c;还是不行

尊享奢睡新境界:康姿百德柔压磁性枕匠心设计引领品质睡眠革命

重塑睡眠艺术&#xff1a;揭秘康姿百德豪华磁性枕&#xff0c;个性化支撑与卓越透气性的完美融合 在现代家居生活中&#xff0c;细节往往决定了整体的品质。而在睡眠方面&#xff0c;一款好的枕头能够改变我们的睡眠体验。康姿百德柔压磁性枕&#xff08;豪华款&#xff09;正…

Anaconda使用

查看conda版本&#xff1a; conda -V查看支持的cuda版本&#xff1a; nvidia -smi 输出为&#xff1a; Mon Aug 12 12:35:26 2024 ----------------------------------------------------------------------------- | NVIDIA-SMI 528.92 Driver Version: 528.…

string详解(2)— 模拟实现

1.经典的string类实现 最主要是实现string类的构造、拷贝构造、赋值运算符重载以及析构函数。 (1) String.h 为了与库里的string进行区分我们使用String&#xff1a; // String.h#pragma once #define _CRT_SECURE_NO_WARNINGS 1 #include<iostream> #include<stri…

在linux上架设Web服务器Apache(Ubuntu)

欢迎诸位来阅读在下的博文~ 在这里&#xff0c;在下会不定期发表一些浅薄的知识和经验&#xff0c;望诸位能与在下多多交流&#xff0c;共同努力! 江山如画&#xff0c;客心如若&#xff0c;欢迎到访&#xff0c;一展风采 文章目录 背景1. 安装 Apache2. 启动和检查 Apache 服务…

计算机的错误计算(六十三)

摘要 计算机的错误计算&#xff08;五十六&#xff09;探讨了大数的正切函数值的错误计算。本节讨论大数的余切函数的计算精度问题。 例1. 已知 计算 不妨用 3种方法计算。 (1) 在 Python 中利用 直接贴图&#xff1a; (2) 在 Java 中利用 若运行下列代码 import ja…

【Python快速入门和实践016】Python常用脚本-对视频抽取指定帧数并保存

一、功能介绍 这段代码的功能是从一个视频文件中抽取指定数量的帧&#xff0c;并将这些帧保存为图像文件。步骤如下&#xff1a; 设置路径和参数&#xff1a; video_path&#xff1a;视频文件的路径。image_folder&#xff1a;保存抽取图像的目录。num_frames_to_extract&#…

FL Studio21.2.4最新中文版免费下载汉化包破解补丁

&#x1f389; FL Studio 21中文版新功能全解析&#xff01;让你的音乐制作更加高效&#xff01; 嘿&#xff0c;各位音乐制作的小伙伴儿们&#xff0c;今天我要安利一款你们绝对会爱上的神器——FL Studio 21中文版&#xff01;这款软件不仅功能强大&#xff0c;而且操作简便…

【ARM】解析MDK生成的C Compiler list文件的具体内容

1、 文档目标 用于解析MDK生成的C Compiler list文件的具体内容。 2、 问题场景 在MDK的options窗口中的Listing栏中有生成对应的源文件的编译列表&#xff08;如图2-1&#xff09;。但是&#xff0c;对于这个生成的列表中包含什么具体的信息就不太清楚了。 图2-1 3、软硬件…

智慧安防/一网统管/视频监控EasyCVR视频汇聚平台的视频轻量化特点及应用

在数字化时代&#xff0c;视频监控已成为保障公共安全、提升管理效率的重要手段。随着技术的不断进步&#xff0c;EasyCVR视频汇聚平台应运而生&#xff0c;平台以其独特的视频轻量化特点在安防监控领域展现出强大的应用潜力。本文将详细探讨EasyCVR视频汇聚平台的视频轻量化特…