以三角波为例。首先编制计算周期三角波的C函数。要求:三角波参数与正弦函数相似,标准周期为2π2\pi2π,占空比ppp(上升时间比周期)表示三角波上升下降段的比例,p=0.5p=0.5p=0.5为上升下降对称的。在[0,2π×p][0, 2\pi \times p][0,2π×p]上为上升沿,在2π×p,2π2\pi \times p, 2\pi2π×p,2π区间为下降沿。

公式:

上升沿:y=2pt−1y=\frac{2}{p}t-1y=p2​t−1

下降沿:y=−22π−pt+2π+p2π−py=-\frac{2}{2\pi -p}t+\frac{2\pi +p}{2\pi -p}y=−2π−p2​t+2π−p2π+p​

只要写出在一个周期内的任意的函数表达式即可产生对应的波形。

三角波函数及测试代码:

//mytrianglewav.c
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define PI 3.14159265double trianglewav(t,p)
double t,p;
{//三角波函数,p:0到1占空比//trianglewav(t,p)的周期为2pi//返回值在-1到+1间double y;//将t归化于0到2pi区间if(t>=0)t=(t/(2*PI)-(int)(t/(2*PI)))*2*PI;elset=2*PI+(t/(2*PI)-(int)(t/(2*PI)))*2*PI;//检查占空比参数范围是否合法if(p<0 | p>1){printf("fun trianglewav error: p<0 or p>1\n");exit(0);}p=p*2*PI;//当p为0或2*pi时的近似处理p=(p-2*PI==0)?2*PI-1e-10:p;p=(p==0)?1e-10:p;if(t<p){y=2*t/p-1;//计算上升沿}else{y=-2*t/(2*PI-p)+(2*PI+p)/(2*PI-p);//下降沿}return y;
}main(int argc, char *argv[])
{double y,t,p=0.5,f=1;int i;if(argc==3){f=atof(argv[1]);p=atof(argv[2]);}for(i=0; i<2*8000; i++){t=-1+1.0/8000*i;y=trianglewav(2*PI*f*t,p);printf("%f\t%f\n",t,y);}
}

编译执行(产生20Hz,占比0.5的三角波)

这里演示如何直接在gnuplot命令窗中执行编译并作图。(用“!”加gcc编译命令即可。)

gnuplot> !gcc mytrianglewav.c
gnuplot> plot  [-0.1:0.1] [-2:2] "<a.exe 20 0.5"  w lp pt 6 lc 3
gnuplot>

结果:

gnuplot> plot  [-0.1:0.1] [-2:2] "<a.exe 20 1"  w lp pt 6 lc 3

gnuplot> plot  [-0.1:0.1] [-2:2] "<a.exe 20 0"  w lp pt 6 lc 3

 gnuplot> plot  [-0.1:0.1] [-2:2] "<a.exe 10 0.2"  w lp pt 6 lc 3

C语言及gnuplot任意波形产生及作图-以三角波为例相关推荐

  1. MATLAB输出四种常用波形(方波、正弦波、三角波、锯齿波)

    1.我们在处理数学以及信号的时候经常会用到MATLAB,因为它可以使我们直观地观察到我们需要的信号的模型.因此掌握基本的MATLAB还是有必要的.这里我们来讲解一下如何用MATLAB产生四种常用波形( ...

  2. FPGA 20个例程篇:20.USB2.0/RS232/LAN控制并行DAC输出任意频率正弦波、梯形波、三角波、方波(二)

    通过上面的介绍相信大家对数字变频已经有了一个较为整体性的认识,下面笔者来对照XILINX的DDS IP核对数字变频技术展开更进一步的说明,做到了理论和实践很好地结合,这样大家再带入Modelsim进行 ...

  3. 画时域随机信号波形_【鼎阳硬件智库原创︱测试测量】任意波形发生器的基本输出波形及其相关参数...

    方浩 鼎阳硬件设计与测试智库专家组成员 传统的函数发生器可以输出正弦波.方波.三角波等标准波形,但是在实际的测试场景中,为了模拟产品在实际使用过程中的复杂情况,往往需要人为地去制造一些"不规 ...

  4. linux服务器上装r,linux服务器安装R语言及Rstudio server

    在linux服务器上使用R语言及Rstudio server cat /etc/redhat-release: 查看服务器系统版本 1. R 程序包获取 查看最新版本的下载链接,使用wget获取 wg ...

  5. 已调信号波形是怎样的_【鼎阳硬件智库原创 | 测试测量】初识任意波形发生器...

    方浩 鼎阳硬件设计与测试智库专家组成员 在产品调试的过程中,大多数的电路需要输入某种幅度随时间变化的信号,在这样的应用场景中,一个完整的测试测量系统一般会包含激励源,被测件和采集仪器三个部分.采集仪器 ...

  6. 全面解读Objective-C语言及Cocoa特性——《Objective-C基础教程》

    媒体评论 "这是我读过的最好的一本编程书.我从头到尾逐字逐句地读完了它,可读性真强啊!试问,现在有几本技术书能达到这种程度?" --Amazon 读者评论 "这本书结构清 ...

  7. go二维map_mirrorlang——从0设计二维内存寻址语言及vm(五.内存管理的思考)

    目录 鹏鹏李李:mirrorlang--从0设计二维内存寻址语言及vm [目录]​zhuanlan.zhihu.com 由一段函数开始思考内存布局 func longestPalindrome(s s ...

  8. dve 二维数组信号 显示波形_函数任意波形发生器价格

    函数任意波形发生器价格,深圳市乐信智测科技有限公司成立于2017年01月11日,注册地位于深圳市龙华区民治街道北站社区创业花园177-180栋411,法人代表为李澍龙. 函数任意波形发生器价格, 说明 ...

  9. 我的Python脚本——生成任意波形并存为txt

    我的Python脚本--生成任意波形并存为txt 一. 脚本功能 根据采样点数,采样周期数等参数以及波形的数学表达式,生成任意波形 将波形数据转为指定位宽的二进制补码,然后存为txt 绘制原始波形和转 ...

最新文章

  1. matlab 定义一个有自变量的方程_Eviews、Stata、Python、Matlab、R描述+相关+回归分析教程汇总...
  2. java+什么时候才需要deploy_细思极恐 - 什么才是真正的会写 Java ?
  3. pep3评估报告解读_quot;聚焦慢病、助力医改,检验项目风险评估培训计划“大兴区第四期培训班成功举办...
  4. Deploy简单配置记录
  5. Linq 中按照多个值进行分组(GroupBy)
  6. dubbo几种协议_Dubbo面试(简)
  7. cuda out of memory gpu还有空间_《室内设计》光与空间的无缝衔接
  8. 计算机应用基础教学计划第二学期,计算机应用基础教学计划(中职) (1)
  9. (解决办法)Windows Server 2003安装sp1时说产品密钥无效
  10. python宿舍管理系统_python实现宿舍管理系统
  11. nRF24L01无线通信模块使用简介
  12. 10x5 10x5用计算机记忆,第一章科学计算器使用
  13. 计算机桌面备份在哪里,电脑备份文件在哪里
  14. hadoop框架介绍
  15. 早安!新春快乐!兔年大吉!
  16. 广州 人才引进,家属随迁(有小孩),自己房产,外省户口,复核所需资料
  17. Flutter版讯飞语音识别demo
  18. android中英文切换功能,Android开发之中英文切换
  19. 【扩展】Freemarker模板遍历集合实现下载word部分文字隐藏
  20. sql入门(3)------SQLServer3

热门文章

  1. elasticsearch(ES)的安装部署及其插件安装
  2. 常见功能点测试用例归纳总结
  3. 区块链软件开发公司谈获取区块链的方式
  4. 访问共享提示登录失败:禁用当前得账户
  5. echarts x轴下绘制表格
  6. 一个 iPod touch 用户的魅族 M8 使用体验
  7. 学习 Java 语言,你需要知道的 Java 简史
  8. java rtf转换word_把Doc文档转换成rtf格式
  9. 图片裁剪工具——react-cropper
  10. u8 系统服务器配置,用友u8服务器配置推荐