在SciPy中进行频谱分析通常使用scipy.signal
模块中提供的函数。下面是一个简单的频谱分析的例子:
import numpy as np
import matplotlib.pyplot as plt
from scipy import signal
# 生成一个包含正弦波和噪声的信号
fs = 1000 # 采样频率
t = np.arange(0, 1, 1/fs) # 时间序列
f1 = 50 # 正弦波频率
signal_data = np.sin(2 * np.pi * f1 * t) + 0.5 * np.random.randn(len(t))
# 计算信号的功率谱密度
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()
上面的例子中,我们首先生成一个包含正弦波和噪声的信号,然后使用signal.welch
函数计算信号的功率谱密度,最后使用matplotlib.pyplot
模块绘制功率谱密度图。通过分析功率谱密度图,我们可以了解信号在不同频率上的能量分布情况。