需求分析
①产生采样率为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正弦波
③两个正弦波相加的信号波形