写一个求信号功率谱密度的代码
时间: 2024-05-06 09:15:12 浏览: 116
以下是一个基于Python的求信号功率谱密度的代码:
```python
import numpy as np
import matplotlib.pyplot as plt
# Generate a random signal
t = np.linspace(0, 1, 1000)
f = 5 # frequency of the signal
s = np.sin(2 * np.pi * f * t)
# Compute power spectral density
frequencies, power_spectrum = signal.welch(s)
# Plot the signal and power spectral density
fig, (ax1, ax2) = plt.subplots(nrows=2, ncols=1, figsize=(8, 6))
ax1.plot(t, s)
ax1.set_xlabel('Time (s)')
ax1.set_ylabel('Amplitude')
ax2.semilogy(frequencies, power_spectrum)
ax2.set_xlabel('Frequency (Hz)')
ax2.set_ylabel('Power Spectral Density')
plt.show()
```
这个代码生成一个频率为5Hz的正弦信号,并计算其功率谱密度。使用`signal.welch()`函数可以计算功率谱密度,该函数使用Welch方法来计算频谱。`semilogy()`函数用于在对数坐标轴上显示功率谱密度。最后,我们将信号和功率谱密度绘制在两个子图中。
阅读全文