使用python生成正弦波数据
在调试ESP32的音频功能的时候,需要对声音的效果做个测试,需要1khz的正弦波c语言数组形式的数据,采样率为16k。这么算也就是一个完整的正弦波波形用16个点来表示。如何快速获取这样的数据,又想起来了强大的python,知道有个numpy科学计算的库,但是仅限于知道还没怎么用过。网上一搜果然有用他生成正弦波的,而且还简单。
这样整体地思路就有了,我先用numpy生成正弦波数据,然后调用python的写文件接口把这些数据写入一个txt文件。随后就一边搜资料一边写,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
''' --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() |
生成的波形图如下: