我已经绘制了使用matplotlib和scipy从视频中提取的音频波形的频率与时间的关系图。
现在,我要确定频率(y坐标)的某个值(例如零,峰值正频率等)的所有时间(x坐标)值。
这是我的绘图代码:
sr, signal = wavfile.read(wave_file_path)
y = signal[:, 0]
t = np.arange(len(y)) / float(sr)
plt.plot(t, y)
plt.xlabel('t')
plt.ylabel('y')
#plt.show()
plt.save("myplot.png")
我尝试了
(np.interp(0, Signal,time))
,但这仅给出了时间的第一个零频率值,而没有给出y坐标值的整个列表。只需提一下,我也尝试过print(np.where(t == 0.0))
,我不确定这是否是正确的使用方式,因为每个wav文件的结果只有(array([0]),)
。这是我从音频文件中绘制的图表。
我保存了图而不是查看,因为我使用的是没有GUI的Linux服务器。
如果通过GUI有更简单的方法,那么我也可以尝试。
最佳答案
谢谢@Alexander Cécile。是的,我很晚才知道这一点。我设法通过y
和t
列表的索引来获取所需的值。我只是通过使用matplotlib使基本列表迭代的操作变得复杂。
我有了使用mathplotlib的想法,因为我发现处理scipy的每个人都在使用mathplotlib绘制它们的点(峰值,+ ve峰值等),这根本不是我的用例。我在没有任何批判性思考的情况下发布此问题感到很愚蠢,不确定是否应该删除此问题,所以我在回答而不是发表评论。
关于python - 如何从python中的mathplot识别某个y值的所有x坐标值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59010585/