在调试ESP32的音频功能的时候,需要对声音的效果做个测试,需要1khz的正弦波c语言数组形式的数据,采样率为16k。这么算也就是一个完整的正弦波波形用16个点来表示。如何快速获取这样的数据,又想起来了强大的python,知道有个numpy科学计算的库,但是仅限于知道还没怎么用过。网上一搜果然有用他生成正弦波的,而且还简单。
这样整体地思路就有了,我先用numpy生成正弦波数据,然后调用python的写文件接口把这些数据写入一个txt文件。随后就一边搜资料一边写,代码如下:
'''
--sin.py
--write by derrick
--功能:生成正弦波采样数据并写入txt文件
--20180829
'''
import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(0,4*np.pi,4*8) #4/2=2 2个完整的正弦波波形 4*8代表一共生成的点数量
y=43+43*np.sin(x) #调整43这个值可以调整波峰值
y1=y.astype(int) #把y值转换成整数
plt.plot(x,y1,'bp--') #绘制成图表
plt.show()
#先把生成两个正弦波数据存入txt文件
np.savetxt("data.txt",(y1),delimiter=',',fmt="%d",newline=',')
#读取正弦波数据,共包含两个正弦波,32个点
fileH=open("data.txt")
fileData=fileH.read()
fileH.close()
#以写方式打开文件,以之前的两个正弦波的数据做拷贝
fileH=open("data-500.txt",'w')
for i in range(2000):
fileH.write("\n")
fileH.writelines(fileData)
fileH.close()
生成的波形图如下: