python中怎么計(jì)算功率譜

小億
375
2023-08-10 09:44:27

在Python中,可以使用SciPy庫(kù)中的signal.spectrogram函數(shù)來(lái)計(jì)算功率譜。這個(gè)函數(shù)會(huì)將輸入的信號(hào)分成多個(gè)窗口,然后對(duì)每個(gè)窗口進(jìn)行傅里葉變換,最后計(jì)算每個(gè)窗口的功率譜密度。

以下是一個(gè)示例代碼:

import numpy as np
from scipy import signal
# 生成隨機(jī)信號(hào)
fs = 1000  # 采樣頻率
t = np.arange(0, 1, 1/fs)  # 時(shí)間序列
x = np.sin(2*np.pi*50*t) + np.sin(2*np.pi*120*t)
# 計(jì)算功率譜
f, t, Sxx = signal.spectrogram(x, fs)
# 繪制功率譜圖
import matplotlib.pyplot as plt
plt.pcolormesh(t, f, 10 * np.log10(Sxx))
plt.colorbar(label='Power Spectral Density (dB/Hz)')
plt.xlabel('Time (s)')
plt.ylabel('Frequency (Hz)')
plt.show()

這個(gè)示例代碼生成了一個(gè)包含兩個(gè)正弦波信號(hào)的合成信號(hào),然后使用signal.spectrogram函數(shù)計(jì)算其功率譜。最后使用Matplotlib庫(kù)繪制功率譜圖。

注意,signal.spectrogram函數(shù)的參數(shù)還可以設(shè)置窗口大小、重疊比例、窗函數(shù)等,以便更好地適應(yīng)不同的信號(hào)特征。

0