AM幅度调制的编程实现及gnuplot作图

时间:2024-03-16 17:42:32

AM幅度调制的编程实现及gnuplot作图

编程语言及软件工具

编程语言:c语言;
编译环境:tcc;
作图工具:windows下的gnuplot工具;

AM幅度调制的编程实现

使用c语言来实现AM调幅波的时候,依据通信原理上的知识,幅度调制是使用调制信号去控制高频载波的幅度,使之随信号做线性变化,并不是指已调信号与原来的信号之间有某种关系,其实它仍然是一种非线性的变换。在这里我假设调制信号m(t)的频率为200HZ,幅度为0.5,直流偏量为1,载波的频率为1KHZ,对于采样频率,理论需要大于等于信号最高频率的两倍,如果低于该频率,恢复出的信号将出现失真,设置采样频率为10KHZ,表达式为:
AM幅度调制的编程实现及gnuplot作图
使用c语言模拟函数,产生一秒内的波形数,一共10000个,将数据打印出来,分为时间和数值两列,使用tab制表符隔开。

使用c语言模拟AM调幅信号

利用AM的调制原理,直接使用AM函数的公式实现调幅信号的数据产生;

AM幅度调制的编程实现及gnuplot作图
tcc编译文件,运行程序,产生包含时间的两列数据,分别为10000个;
AM幅度调制的编程实现及gnuplot作图

将数据写入到一个.dat的文件中去,使用如下代码;

am1.exe > am1.dat

gnuplot作图显示

cmd命令下调用gnuplot读取文本中的数据作图显示调制信号的结果,对于AM 调制,采样频率为10KHZ,而调制信号的频率为200HZ,调制后的信号周期其实仍然是200HZ频率下的周期,经过10KHZ的频率采样一秒后,生成的是50个周期的图形,这里使用gnuplot画图时候,若要让它显示两个周期的图形,横坐标的时间区间应取为[0:1/100],对于纵坐标的幅度值,调制度0.5加1的直流偏量,变化范围在[-1.5:1.5]之间,这里可以设置为[-2:2]之间显示。利用gnuplot读取文件数据作图的方式有很多,这里我使用的是.dat文件,u参数后面表示的是读取的列范围,w为with的缩写,后面的l表示使用的线型,具体代码如下;

 plot [0:(1/100.0)] [-2:2] "<am1.exe" u 1:2 w l

gnuplot对AM调制的最终作图结果为:

AM幅度调制的编程实现及gnuplot作图
结果显示c语言实现了AM调制,包络为调制信号的波形图。