C语言产生抽样信号并使用gnuplot绘图

需求分析
①产生采样率为8000次每秒的正弦信号,时长为1秒。正弦信号的幅度为0.6,频率为500Hz或50Hz。
② 用gnuplot软件画出这个信号的波形图。
③ 将以上500Hz和50Hz的两个正弦信号相加。并用gnuplot画出相加后的波形图。

首先分析正弦波信号的产生。设正弦信号的表达式为:f(t)=A sin(2 π f t),A为幅度,f为频率,t为时间。这样我们就设置好了幅度以及频率。关于采样率和时间,我们只需要产生一秒之内的8000个数据既可。现在我们需要产生以下三个信号:

①采样率8000次/秒,幅度0.6,频率500Hz的正弦波
②采样率8000次/秒,幅度0.6,频率50Hz的正弦波
③采样率8000次/秒,信号波形是上面两个正弦信号的相加

具体的表达式和采样率实现方式见后面的代码。

关于使用gnuplot软件进行正弦信号的绘图,实际就是用C语言产生的正弦信号的数据进行绘图,具体的操作可以看我之前的博客。链接为:

https://blog.csdn.net/qq_33523925/article/details/87936254

也就是说,我们需要写三个代码,用于产生上面介绍的三个信号的数据,然后使用命令窗口生成数据文件,再调用gnuplot进行绘图。下面进行完整的实现过程:

抽样信号产生

代码段1:

#include<stdio.h>
#include<math.h>

#define pi 3.1415

int main()
{
    double t,f;
	int i;
	for(i=0;i<8000;i++)
	{
		t=i/8000.0;
		f=0.6*sin(2*pi*500*t);
		printf("%.6f %.8f\n",t,f);
	}
	return 0;
}

代码段2:

for(i=0;i<8000;i++)
{
	t=i/8000.0;
	f=0.6*sin(2*pi*50*t);
	printf("%.6f %.8f\n",t,f);
}

代码段3:

for(i=0;i<8000;i++)
{
	t=i/8000.0;
	f=0.6*(sin(2*pi*500*t)+sin(2*pi*50*t));
	printf("%.6f %.8f\n",t,f);
}

命令行

 E:                        //打开E盘
 cd path                   //打开.c文件所在路径
 tcc sin1.c -o sin1.exe    //生成exe文件
 sin1.exe >sin1.dat        //产生dat文件,名为sin1.dat
 gnuplot                   //调用gnuplot软件
 plot ”sin1.dat" w l       //使用gnuplot对数据进行绘图

运行结果
①500Hz正弦波
在这里插入图片描述
②50Hz正弦波
在这里插入图片描述
③两个正弦波相加的信号波形
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值