頻域直方圖是一種表示信號頻域特征的圖像,可以快速了解信號的頻域信息,對信號的分析和處理具有重要意義。在Python中,我們可以通過使用numpy和matplotlib庫來繪制頻域直方圖。
# 導入庫 import numpy as np import matplotlib.pyplot as plt # 生成信號 Fs = 1000 # 采樣率 t = np.arange(0, 1, 1 / Fs) # 時間軸 f1 = 10 # 信號頻率1 f2 = 50 # 信號頻率2 s = np.sin(2 * np.pi * f1 * t) + np.sin(2 * np.pi * f2 * t) # 信號 # 繪制原始信號的時域波形和頻域直方圖 plt.figure() plt.subplot(2, 1, 1) # 兩行一列的第一幅圖 plt.plot(t, s) plt.title('Time-domain waveforms') plt.ylabel('Amplitude') plt.xlabel('Time') plt.subplot(2, 1, 2) # 兩行一列的第二幅圖 plt.hist(np.abs(np.fft.fft(s)), bins=200, range=(0, 500)) # 繪制頻域直方圖 plt.title('Frequency-domain histograms') plt.xlabel('Frequency(Hz)') plt.ylabel('Count') plt.show()
在上面的代碼中,首先生成了一個10Hz和50Hz的混合信號,并在兩行一列的圖像框中繪制了時域波形和頻域直方圖。其中,np.fft.fft()函數用于對信號進行傅里葉變換,np.abs()函數用于取得變換后的幅值,np.histogram()函數用于生成直方圖。通過設置直方圖的bins和range參數,可以實現對直方圖的自定義設置。運行代碼后,將會得到下面的繪圖結果:
![頻域直方圖](https://i.loli.net/2021/10/21/ZHlnYJy5269TwiU.png)上一篇python界面酷炫
下一篇css中加粗是什么