頻域直方圖是一種表示信號(hào)頻域特征的圖像,可以快速了解信號(hào)的頻域信息,對(duì)信號(hào)的分析和處理具有重要意義。在Python中,我們可以通過使用numpy和matplotlib庫來繪制頻域直方圖。
# 導(dǎo)入庫 import numpy as np import matplotlib.pyplot as plt # 生成信號(hào) Fs = 1000 # 采樣率 t = np.arange(0, 1, 1 / Fs) # 時(shí)間軸 f1 = 10 # 信號(hào)頻率1 f2 = 50 # 信號(hào)頻率2 s = np.sin(2 * np.pi * f1 * t) + np.sin(2 * np.pi * f2 * t) # 信號(hào) # 繪制原始信號(hào)的時(shí)域波形和頻域直方圖 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()
在上面的代碼中,首先生成了一個(gè)10Hz和50Hz的混合信號(hào),并在兩行一列的圖像框中繪制了時(shí)域波形和頻域直方圖。其中,np.fft.fft()函數(shù)用于對(duì)信號(hào)進(jìn)行傅里葉變換,np.abs()函數(shù)用于取得變換后的幅值,np.histogram()函數(shù)用于生成直方圖。通過設(shè)置直方圖的bins和range參數(shù),可以實(shí)現(xiàn)對(duì)直方圖的自定義設(shè)置。運(yùn)行代碼后,將會(huì)得到下面的繪圖結(jié)果:
![頻域直方圖](https://i.loli.net/2021/10/21/ZHlnYJy5269TwiU.png)上一篇python界面酷炫
下一篇css中加粗是什么