python怎么提取振动时域频域特征,源代码
时间: 2023-11-07 12:04:40 浏览: 191
提取振动时域和频域特征可以使用Python中的信号处理库`scipy`和`numpy`。以下是一个示例代码,用于提取时域和频域特征:
```python
import numpy as np
from scipy.fftpack import fft
from scipy.signal import find_peaks
# 读取振动数据
data = np.loadtxt('vibration_data.csv', delimiter=',')
# 提取时域特征
mean = np.mean(data) # 均值
std = np.std(data) # 标准差
max_val = np.max(data) # 最大值
min_val = np.min(data) # 最小值
rms = np.sqrt(np.mean(data ** 2)) # 均方根
# 提取频域特征
fft_data = fft(data) # 进行快速傅里叶变换
freqs = np.fft.fftfreq(len(data)) # 获取频率数组
peak_freqs, _ = find_peaks(np.abs(fft_data)) # 获取峰值频率
# 输出结果
print("Mean: ", mean)
print("Std: ", std)
print("Max: ", max_val)
print("Min: ", min_val)
print("RMS: ", rms)
print("Peak Frequencies: ", freqs[peak_freqs])
```
在此示例中,我们首先读取振动数据文件`vibration_data.csv`,然后使用`numpy`计算时域特征,包括均值、标准差、最大值、最小值和均方根,接着使用`scipy`进行快速傅里叶变换,从而提取频域特征,包括频率数组和峰值频率。最后,我们将结果打印输出。
请注意,此示例代码仅用于演示目的,实际应用中可能需要根据具体情况进行修改和优化。
阅读全文