时域信号转为psd的python代码
时间: 2024-09-27 16:05:25 浏览: 36
在Python中,将时域信号转换为功率谱密度(PSD)通常会用到matplotlib库和numpy库,以及scipy.signal模块中的` welch`函数,它实现了快速傅立叶变换(FFT)和Welch's periodogram方法。下面是一个简单的例子:
```python
import numpy as np
import matplotlib.pyplot as plt
from scipy import signal
# 假设我们有一个示例时域信号
t = np.linspace(0, 1, 1000)
x = np.sin(2 * np.pi * 50 * t) + 0.5 * np.sin(2 * np.pi * 150 * t)
# 使用welch函数计算PSD
nperseg = 256 # 每段数据长度
noverlap = nperseg // 2 # 重叠部分
fs = 1 / (t[1] - t[0]) # 采样频率
psd, freqs = signal.welch(x, fs=fs, window='hann', nperseg=nperseg, noverlap=noverlap, scaling='density')
# 绘制PSD图
plt.plot(freqs, psd)
plt.xlabel('Frequency [Hz]')
plt.ylabel('Power/Frequency [dB/Hz]')
plt.title('Power Spectral Density')
plt.show()
阅读全文