在做故障诊断,机器学习预测等常常会用到这些指标,通过综合分析这些时域指标,能够对信号的特性有更深入的了解,从而为进一步的信号处理、模型建立和决策制定提供依据。
16种常用时域指标如下:
每种指标的解释如下:
最大值:反映数据中的最大观测值。
最小值:反映数据中的最小观测值。
均值:数据的算术平均值,反映中心趋势。
绝对平均值:数据绝对值的平均,忽略正负符号影响。
方差:数据平方的均值。
标准差:数据偏离均值的平均离散程度。
均方根,也称有效值(RMS):信号能量的有效强度。
方根幅值:平方根后平均再平方,反映幅值特征。
峰值:数据的最大绝对值,衡量瞬时强度。
峰峰值:最大值与最小值的差,表征整体波动范围。
峰值因子:峰值与有效值之比,评估信号冲击特性。
裕度因子:峰值与方根幅值之比,常用于机械故障诊断。
脉冲因子:峰值与均值之比,检测瞬态冲击。
波形因子:有效值与均值之比,描述能量分布特性。
偏斜度:衡量数据分布不对称性。
峭度:评估数据分布尖锐或平坦程度。
MATLAB代码:
clear
clc
% 生成一个10行1000列的随机数据
data = rand(10,1000);
for i = 1:size(data,1)
xdata = data(i,:); %遍历每一行
max_data = max(xdata); %1.最大值
min_data = min(xdata); %2.最小值
mean_value = mean(xdata); %3.均值
Absolute_mean_value=mean(abs(xdata)); %4.绝对均值
variance_value = mean((xdata-mean_value).^2); %5.方差
standard_deviation_value = std(xdata); %6.标准差
r=rms(xdata); %7.均方根,有效值
h = mean(sqrt(abs(xdata)))^2; % 8.方根幅值
p=max(abs(xdata))-min(xdata); %9.峰值
p_p = max(xdata)-min(xdata); % 10.峰峰值
c=p/r; %11. 峰值因子
ma=p/mean(sqrt(abs(xdata)))^2; %12. 裕度因子
v=p/mean(abs(xdata)); %13. 脉冲因子
s=r/mean(abs(xdata)); %14. 波形因子
skewness_value = skewness(xdata);%15.偏斜度
k=kurtosis(xdata)-3; %16. 峭度
Feature_data(i,:) = [max_data,min_data,mean_value,Absolute_mean_value,...
variance_value,standard_deviation_value,r,h,p,p_p,c,ma,v,s,skewness_value,k];
end
python代码:
import numpy as np
from scipy.stats import skew, kurtosis
# 生成一个10行1000列的随机数据
data = np.random.rand(10, 1000)
# 初始化存储特征数据的数组
Feature_data = np.zeros((10, 16)) # 10行,16个特征
# 遍历每一行
for i in range(data.shape[0]):
xdata = data[i, :] # 获取当前行数据
# 计算各个特征
max_data = np.max(xdata) # 1. 最大值
min_data = np.min(xdata) # 2. 最小值
mean_value = np.mean(xdata) # 3. 均值
Absolute_mean_value = np.mean(np.abs(xdata)) # 4. 绝对均值
variance_value = np.mean((xdata - mean_value) ** 2) # 5. 方差
standard_deviation_value = np.std(xdata, ddof=1) # 6. 标准差(样本标准差)
r = np.sqrt(np.mean(xdata**2)) # 7. 均方根(有效值)
h = np.mean(np.sqrt(np.abs(xdata))) ** 2 # 8. 方根幅值
p = np.max(np.abs(xdata)) - np.min(xdata) # 9. 峰值
p_p = np.max(xdata) - np.min(xdata) # 10. 峰峰值
c = p / r # 11. 峰值因子
ma = p / h # 12. 裕度因子
v = p / np.mean(np.abs(xdata)) # 13. 脉冲因子
s = r / np.mean(np.abs(xdata)) # 14. 波形因子
skewness_value = skew(xdata) # 15. 偏斜度
k = kurtosis(xdata) # 16. 峭度
# 将特征存储到数组中
Feature_data[i, :] = [
max_data, min_data, mean_value, Absolute_mean_value,
variance_value, standard_deviation_value, r, h, p, p_p,
c, ma, v, s, skewness_value, k
]
# 打印结果
print("特征数据矩阵:")
print(Feature_data)
测试:
随机写了一个
data = [1, 55, 3, 5, 6, 8, 9, 5, 1, 23, 2, 1, 5, 6, 1, 2, 3, 1, 5, 2, 3, 2, 1, 2, 3, 5, 4, 6, 2, 1, 3, 21];
matlab输出结果为:
Python输出结果为:
结果一致,完美!
后台回复关键词获取WORD文档公式以及代码:
时域指标