C语言进阶——使用C语言与gnuplot结合画一些波形
1.用C语言产生均匀分布的随机数
(1)功能
产生(a,b)区间上均匀分布的随机数
(2)函数简介
均匀分布函数的概率密度函数为
f(x)={1b−a,a≤x≤b0,其它f(x)=\begin{cases} \frac{1}{b-a} ,a\leq x\leq b\\ 0,其它 \end{cases} f(x)={b−a1,a≤x≤b0,其它
通常用U(a,b)表示,
均匀分布的均值为
a+b2\frac{a+b}{2} 2a+b
方差为
(a−b)212\frac{(a-b)^2}{12} 12(a−b)2
产生均匀分布的随机数的方法:
混合同余法
f(x)={Xi=(aXi−1+c)(modM)yi=XiMf(x)=\begin{cases}X_i =(aX_{i-1}+c) (mod M)\\ y_i =\frac{X_i}{M}\end{cases} f(x)={Xi=(aXi−1+c)(modM)yi=MXi
采用混合同余法,
产生(0,1)区间上的随机数y_i,通常选取a=2045,c=1,M=2^20;任意给定一个初始值X_(i-1),即可得到一个随机数,
zi=a+(b−a)yiz_i=a+(b-a)y_i zi=a+(b−a)yi
产生(a,b)区间上的随机数z_i。使用指针变量*s,使得每次产生的随机数都不一样,只要改变循环的次数,就可以得到任意多个0~1随机数
(3)实现代码
子函数程序(产生随机数)
//a为给定区间的下限 b为给定区间的上限 seed 指针变量,*seed为随机数的种子
double uniform(a,b,seed)
double a,b;
long int *seed;
{double t;
*seed=2045*(*seed+1);
*seed=*seed-(*seed/1048576)*1048576;
t=(*seed)/1048576.0;
t=a+(b-a)*t;
return(t);
}
例:产生50个0到1之间均匀分布的随机数
实现代码
#include "stdio.h"
#include "uniform.c"
main()
{double a,b,x;int i,j;
long int s;
double uniform(double,double,long int *);
a=0.0;
b=1.0;
s=24681;
for(i=0;i<50;i++) //产生50个0到1的随机数{x=uniform(a,b,&s);printf("%d\t%13.7f",i,x);printf("\n");}
}
将产生的数据通过重定向的方法存入一个新的文本文件,并通过读取文本文件画出这些随机数
%编译生成可执行文件uniform1.exe
tcc uniform1.c
%通过重定向的方法另存数据
uniform1.exe > uniform1.txt
%画图
gnuplot
%作出满足均匀分布的随机数的线状图
plot [0:49] [0:1] "uniform1.txt"u 1:2 w l
运行结果
(4)与MATLAB作图对比
MATLAB作图实现代码
%产生一个长度为50的随机信号,该信号在区间[0,1]上均匀分布
clf;
y=rand(1,50); %在[0,1]上用随机函数rand()产生
plot(y);
运行结果
2.用C语言产生一个调幅波的波形
参考链接:https://blog.csdn.net/shaoyubin999/article/details/82740689
波形数据(时间长度为1秒),并通过gnuplot作出2个被调信号周期上的波形图。
第一步 产生波形数据
//amdata.c --第1行:说明文件名
//用于计算AM调幅波数据1秒
#include<stdio.h>
#include<math.h>
#define pi 3.14159265
int main()
{double s,t;int i; //循环变量for (i=0; i<8000; i++){t=i/8000.0;s=(1+0.5*cos(2*pi*100*t))*cos(2*pi*800*t);//信号的表达式printf("%e\t%e\n",t,s);}
}
第二步:用gnuplot画出数据波形
第一种方法:
先对amdata.c编辑生成amdata.exe,然后调用
画出其点状图
实现代码(在.c文件所在的路径下操作)
tcc amdate.cgnuplotplot [0:(1/50.0)] [-2:2] "<amdata.exe" u 1:2 w p
其中,[0:(1/50.0)]
定义了横坐标的范围,[-2:2]
是纵坐标的显示范围,u 1:2
表示使用数据文件的1,2列数据,w p
表示使用点作图。
运行结果
画出其线状图
实现代码
plot [0:(1/50.0)] [-2:2] "<amdata.exe" u 1:2 w l
其中,[0:(1/50.0)]
定义了横坐标的范围,[-2:2]
是纵坐标的显示范围,u 1:2
表示使用数据文件的1,2列数据,w l
表示使用折线作图。
运行结果
第二种方法:
通过重定向的方法生成数据文件,然后调用数据文件作图
实现代码
amdata.exe > amdata.txtgnuplotplot [0:(1/50.0)] [-2:2] "amdata.txt" u 1:2 w l
运行结果
C语言进阶——使用C语言与gnuplot结合画一些波形相关推荐
- 【C语言进阶】C语言程序设计:动态通讯录(顺序表实现)
目录 动态通讯录的实现 一.实验的目的和意义 二.实验内容描述 三.功能描述 四.数据结构 1.三大模块 2.结构设计 3.动态开辟 4.文件操作 5.主要函数 五.流程图及模块算法 1.Contac ...
- 【C语言进阶】C语言实现通讯录
目录 一.引言 二.如何实现通讯录 1.通讯录要求 2.创建主菜单 3.初步设置主函数 4.创建通讯录 5.初始化通讯录 6.case 1(增加联系人) 7.case 5(显示通讯录中的信息) 8.c ...
- c语言进阶.pdf,C语言程序设计进阶:文件.pdf
格式化输⼊输出 格式化的输⼊输出 • printf • %[flags][width][.prec][hlL]type • scanf • %[flag]type %[flags][width][.prec ...
- 最新C语言进阶实战(完整)
C语言进阶视频 C语言进阶视频 C语言进阶视频 下载地址:百度网盘
- ggplot2箱式图两两比较_R语言进阶笔记2 | 长数据与ggplot2
1. 长数据是什么鬼? 之前介绍了如何将多个性状的箱线图放在一个图上,比如learnasreml包中的fm数据,它有h1~h5五年的株高数据,想对它进行作图. 「数据预览:」 > library ...
- C语言进阶深度学习目录表
学习交流加(可免费帮忙下载CSDN资源): 个人微信(进微信群加): LyyCoder 学习交流资源分享qq群1(已满): 962535112 学习交流资源分享qq群2(已满): 780902027 ...
- 【C语言进阶深度学习记录】三十八 C/C++语言中的函数声明与函数定义
文章目录 1 函数的声明和定义 1.1 代码分析 2 总结 1 函数的声明和定义 声明的意义在于告诉编译器程序单元的存在.只是告诉编译器它存在但是不在声明这里定义,有可能在当前文件中的其他地方或者其他 ...
- 【C语言进阶深度学习记录】三十五 程序中的堆、栈以及静态存储区(数据区)
学习交流加 个人qq: 1126137994 个人微信: liu1126137994 学习交流资源分享qq群: 962535112 在我之前学习底层的知识的时候,也写过相关的内容.可以对比的学习:[软 ...
- 【C语言进阶深度学习记录】二十六 C语言中的字符串与字符数组的详细分析
之前有一篇文章是学习了字符和字符串的,可以与之结合学习:[C语言进阶深度学习记录]十二 C语言中的:字符和字符串 文章目录 1 字符串的概念 1.1 字符串与字符数组 1.2 字符数组与字符串代码分析 ...
最新文章
- [C++程序语言设计笔记一]面向对象编程抽象,继承,重写基本介绍
- 系统优化怎么做-SQL优化
- 利用生物视觉机制提高神经网络的对抗鲁棒性 | NeurIPS 2020
- filezilla 设置filezilla使用明文密码_详解WordPress使用FTP上传主题和插件
- mysql怎么删除唯一索引_mysql删除唯一索引
- 个人微信订阅号自定义菜单空白
- Windows 服务(附服务开发辅助工具)
- oracle错误代码12516,ORA-12516错误解决
- IDEA创建工程时 报错 Initialization failed for 'https://start.spring.io'
- 全面质量管理体系方案
- 移动通信发展史及原理学习
- 【Axure PR原型模板】微信公众小程序手机移动端高保真交互原型
- confluence 制作流程图_Sketch制作交互流程图,哪种工具最高效?
- 浅谈cookie中的SameSite属性
- 第十七章、程序管理与 SELinux 初探
- 趣店PHP面经_趣店2018秋招笔试题目
- oracle 12c 关闭,oracle 12c的启动与关闭
- WZOI-261疯狂吃鸡腿2
- 如何得到满意的好答案
- Yolov3,v4,v5区别
热门文章
- 错误代码:1120当前Hsql数据库已被另一线程锁定
- MySql优化神器 Explain工具介绍
- 解决 GitHub 拉取代码网速慢的问题
- Idea在debug时打上断点没有用 Skipped breakpoint at ... because it happened inside debugger evaluation
- 虎牙改名字服务器升级维护中,王一博“虎牙直播”被占id,无奈改了名字,新名字却被吐槽...
- 【ICPC 2021网络赛2】The 2021 ICPC Asia Regionals Online Contest (II)签到题5题
- 2020 年百度之星·程序设计大赛 - 初赛一 GPA DFS深搜
- C++奥赛一本通贪心题解
- NYOJ324 - 猴子吃桃问题
- linux ssh客户端_Linux终端连接Linux服务器