SciPy中怎么進(jìn)行頻譜分析

小億
91
2024-05-24 16:32:14
欄目: 編程語言

在SciPy中進(jìn)行頻譜分析通常使用scipy.signal模塊中提供的函數(shù)。下面是一個(gè)簡單的頻譜分析的例子:

import numpy as np
import matplotlib.pyplot as plt
from scipy import signal

# 生成一個(gè)包含正弦波和噪聲的信號(hào)
fs = 1000  # 采樣頻率
t = np.arange(0, 1, 1/fs)  # 時(shí)間序列
f1 = 50  # 正弦波頻率
signal_data = np.sin(2 * np.pi * f1 * t) + 0.5 * np.random.randn(len(t))

# 計(jì)算信號(hào)的功率譜密度
frequencies, power_spectrum = signal.welch(signal_data, fs)

# 繪制功率譜密度圖
plt.figure()
plt.plot(frequencies, power_spectrum)
plt.xlabel('Frequency (Hz)')
plt.ylabel('Power spectral density')
plt.show()

上面的例子中,我們首先生成一個(gè)包含正弦波和噪聲的信號(hào),然后使用signal.welch函數(shù)計(jì)算信號(hào)的功率譜密度,最后使用matplotlib.pyplot模塊繪制功率譜密度圖。通過分析功率譜密度圖,我們可以了解信號(hào)在不同頻率上的能量分布情況。

0