编写一个python包络谱程序
时间: 2023-10-21 21:05:44 浏览: 75
下面是一个简单的 Python 包络谱程序,用于计算并绘制信号的包络谱:
```python
import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import hilbert
def envelope_spectrum(x, fs):
N = len(x)
X = np.fft.fft(x)
X_mag = np.abs(X)
X_env = np.abs(hilbert(X_mag))
f = np.arange(0, N/2) * fs/N
X_env = X_env[:int(N/2)]
return f, X_env
# 测试
fs = 1000
t = np.arange(0, 1, 1/fs)
f1 = 50
f2 = 100
x = np.sin(2*np.pi*f1*t) + np.sin(2*np.pi*f2*t)
f, X_env = envelope_spectrum(x, fs)
plt.plot(f, X_env)
plt.xlabel('Frequency [Hz]')
plt.ylabel('Amplitude')
plt.show()
```
该程序使用了 `numpy` 和 `matplotlib` 库,以及 `scipy.signal` 库中的 `hilbert` 函数来计算信号的包络谱。在测试部分,我们生成了一个包含两个正弦波的信号,并调用 `envelope_spectrum` 函数来计算其包络谱,最后使用 `matplotlib` 绘制了包络谱图。