C语言产生不同频率的正弦波并用gnuplot做出波形图

    xiaoxiao2024-12-11  13

    产生两个采样率为8000次每秒的正弦信号,时长为1秒(8000点),正弦信号的幅度为0.6,频率分别为500Hz和50Hz,并用gnuplot作图。

    正弦波表达式为: s(t) = 0.6 sin( 2π 50t ) 和s(t) = 0.6 sin( 2π 500t )

    第一步:用C语言生成数据

    f=50HZ时:

    #include<stdio.h> #include<math.h> #define pi 3.14159 int main() { double t,s; for (int i=0; i<8000; i++) { t=i/8000.0; s=0.6*sin(2*pi*50*t); printf("%e\t%e\n",t,s); } }

    f=500HZ时:

    #include<stdio.h> #include<math.h> #define pi 3.14159 int main() { double t,s; for (int i=0; i<8000; i++) { t=i/8000.0; s=0.6*sin(2*pi*500*t); printf("%e\t%e\n",t,s); } }

    用tcc编译,分别输出为wave.exe和wave1.exe, 执行后从屏幕输出8000行数据:

    第二步:用gnuplot画出波形图

    1.gnuplot下载地址: https://sourceforge.net/projects/gnuplot/files/gnuplot/5.2.6/

    gnuplot的安装: 下载完成后,解压并找到gnuplot.exe,只需要将gnuplot.exe所在路径添加到电脑环境变量“Path”下即可使用。

    2. gnuplot的使用常识

    gnuplot软件绘图的一些基本设定:

    1)线型(linetype ) 此类型主要设定线条的颜色,具体对应如下:

    n0123456linetypeblackredgreenbluepinklight blueyellow

    2)点型(pointtype) 此类型设定点的形状,共有14种,对应如下:

    n012345678910111213pointtypenone+×*□■○●△▲▽▼◇◆

    3)w lp( with linepoint )

    即描出数据点,并且将数据点连线。with 后的属性参数有多个选择,对应不同的作图方式。在指令窗口输入 hplp with 或者 help style就可以查到可供选择的 style 参数。常用的作图方式参数及其对应含义如下:

    style参数简写含义linel将相邻点连线pointp将每一点用一符号标记linepointlp将每一点用一符号标记,并将相邻点连线impulsesi将每一点画一垂直线至x轴stepsst用垂直线及水平线各一条来连接两点,形成台阶状图形boxes以x坐标为中心做柱状图errorbarse对每一点坐标值(x,y),画一由(x,ylow) 至(x,yhigh) 的线段。并在线段两端做上 tic markboxerrorbars结合errorbars与boxes两者功能

    4)lt 1(linetype 1) 规定了连线的类型,-1对应黑虚线,0对应黑虚线,而大于0的整数对应的是实线:

    n12345678linetype 1紫色绿色蓝色橙色黄色深蓝色红色黑色

    (大于8的数字对应的颜色与其对8的余数对应的颜色相同)

    5)lw 2

    即 linewidth 2 ,规定了线的宽度,数字越大线越宽。

    6)pt 4

    即 pointtype 4,规定了标记点的类型

    4.命令窗口分别执行wave.exe和wave1.exe:

    输入命令:

    gnuplot>plot "<wave.exe" w l gnuplot>plot "<wave1.exe" w l

    波形图如下: 50HZ

    500HZ

    第三步:将两个正弦波相加并作图

    s(t) = 0.6 [ sin( 2π 50t ) + sin( 2π 500t ) ]

    tcc编译输出为wave2.exe

    gnuplot作图如下(截取其中一部分):

    最新回复(0)