📜  使用Python和 Matplotlib 绘制频谱图

📅  最后修改于: 2022-05-13 01:55:12.436000             🧑  作者: Mango

使用Python和 Matplotlib 绘制频谱图

先决条件: Matplotlib

频谱图可以定义为频率随时间变化的视觉表示,它显示了特定时间的信号强度。简而言之,频谱图只不过是一张声音图片。它也被称为声纹或声纹。频谱图使用多种颜色显示,表示信号强度。如果颜色很亮,则意味着信号的能量很高。换句话说,颜色的亮度与频谱图中的信号强度成正比。

频谱图实际上是使用短时傅立叶变换 (STFT) 创建的。它帮助我们对提供的信号进行时变分析。无论如何,不需要深入这个主题。主要概念是我们将音频信号分成小块,然后将该音频信号随时间绘制在图表上。

对于此可视化, specgram()函数与所需参数一起使用。

这些是频谱图的基础知识。现在,让我们继续使用Python的matplotlib库绘制光谱图。

方法

  • 导入模块
  • 设置时间差拍摄生成的信号
  • 生成值数组
  • 使用具有正确参数的函数
  • 向绘图添加额外的自定义
  • 显示图

例子:

Python3
# Importing libraries using import keyword.
import math
import numpy as np
import matplotlib.pyplot as plt
  
# Set the time diffrence to take picture of
# the the generated signal.
Time_difference = 0.0001
  
# Generating an array of values
Time_Array = np.linspace(0, 5, math.ceil(5 / Time_difference))
  
# Actual data array which needs to be plot
Data = 20*(np.sin(3 * np.pi * Time_Array))
  
# Matplotlib.pyplot.specgram() function to
# generate spectrogram
plt.specgram(Data, Fs=6, cmap="rainbow")
  
# Set the title of the plot, xlabel and ylabel
# and display using show() function
plt.title('Spectrogram Using matplotlib.pyplot.specgram() Method')
plt.xlabel("DATA")
plt.ylabel("TIME")
plt.show()


输出: