欢迎关注我的公众号《故障诊断与python学习》
代码位置:https://github.com/HappyBoy-cmd/fault_diagnosis_signal_processing
参考资料:
书籍:机械故障诊断及典型案例解析(第2版,时献江)
学位论文:细纱机罗拉轴承故障诊断方法研究
信号的幅域分析也称统计特征分析,主要利用振动信号的幅值统计特征来进行分析和诊断。应用比较广泛的有均方根值、峰值指标、波形指标和峭度等指标。信号的幅域分析也属于时域分析,和相关分析等时域分析方法不同,幅域分析不考虑原始信号的时序,仅与信号的幅值大小及分布有关。幅域参数包括有量纲幅域参数和无量纲幅域参数两大类。本文将介绍有量纲幅域参数和无量纲幅域参数,及其在CWRU轴承和IMF(辛辛那提大学轴承数据)全寿命周期轴承实验数据上进行实战。
幅值域参数可以通过三种方式计算。
第1种:随机信号的幅值域参数与幅值概率密度函数有密切关系,对于各态历经的平稳信号,可以由幅值概率密度函数计算如下统计参数
均值: μ x = ∫ − ∞ + ∞ x p ( x ) d x {\mu_{x}=\int_{-\infty}^{+\infty} x p(x) \mathrm{d} x} μx=∫−∞+∞xp(x)dx
均方根值: x r m s = ∫ − ∞ + ∞ x 2 p ( x ) d x {x_{\mathrm{rms}}=\sqrt{\int_{-\infty}^{+\infty} x^{2} p(x) \mathrm{d} x}} xrms=∫−∞+∞x2p(x)dx
方差: σ x 2 = ∫ − ∞ ∞ ( x − x ˉ ) 2 p ( x ) d x = x r m s 2 − x ˉ 2 {\sigma_{x}^{2}=\int_{-\infty}^{\infty}(x-\bar{x})^{2} p(x) \mathrm{d} x=x_{\mathrm{rms}}^{2}-\bar{x}^{2}} σx2=∫−∞∞(x−xˉ)2p(x)dx=xrms2−xˉ2
绝对平均值: ∣ x ˉ ∣ = ∫ − ∞ + ∞ ∣ x ∣ p ( x ) d x {|\bar{x}|=\int_{-\infty}^{+\infty}|x| p(x) \mathrm{d} x} ∣xˉ∣=∫−∞+∞∣x∣p(x)dx
方根幅值: x r = [ ∫ − ∞ + ∞ ∣ x ∣ p ( x ) d x ] 2 {x_{\mathrm{r}}=\left[\int_{-\infty}^{+\infty} \sqrt{|x|} p(x) \mathrm{d} x\right]^{2}} xr=[∫−∞+∞∣x∣p(x)dx]2
歪度: x = ∫ − ∞ + ∞ x 3 p ( x ) d x {x=\int_{-\infty}^{+\infty} x^{3} p(x) \mathrm{d} x} x=∫−∞+∞x3p(x)dx
峭度: β = ∫ − ∞ + ∞ x 4 p ( x ) d x {\beta=\int_{-\infty}^{+\infty} x^{4} p(x) \mathrm{d} x} β=∫−∞+∞x4p(x)dx
第2种:以上参数计算需要用到幅值概率密度函数,不易计算。实际上对于各态历经的平稳随机信号,可以直接利用单个样本进行计算,公式如下:
均值: μ x = lim T → ∞ 1 T ∫ 0 T x ( t ) d t {\mu_{x}=\lim _{T \rightarrow \infty} \frac{1}{T} \int_{0}^{T} x(t) \mathrm{d} t} μx=limT→∞T1∫0Tx(t)dt
均方根值: x r m s = lim T → ∞ 1 T ∫ 0 T x 2 ( t ) d t {x_{\mathrm{rms}}=\sqrt{\lim _{T \rightarrow \infty} \frac{1}{T} \int_{0}^{T} x^{2}(t) \mathrm{d} t}} xrms=limT→∞T1∫0Tx2(t)dt
方差: σ x 2 = lim T → ∞ 1 T ∫ 0 T [ x ( t ) − x ˉ ] 2 d t = x r m s 2 − x ˉ 2 {\sigma_{x}^{2}=\lim _{T \rightarrow \infty} \frac{1}{T} \int_{0}^{T}[x(t)-\bar{x}]^{2} \mathrm{~d} t=x_{r m s}^{2}-\bar{x}^{2}} σx2=limT→∞T1∫0T[x(t)−xˉ]2 dt=xrms2−xˉ2
绝对平均值: ∣ x ˉ ∣ = lim 1 T ∫ 0 T ∣ x ( t ) ∣ d t {|\bar{x}|=\lim \frac{1}{T} \int_{0}^{T}|x(t)| \mathrm{d} t} ∣xˉ∣=limT1∫0T∣x(t)∣dt
方根幅值: x r = [ lim T → ∞ 1 T ∫ 0 T ∣ x ( t ) ∣ d t ] 2 {x_{\mathrm{r}}=\left[\lim _{T \rightarrow \infty} \frac{1}{T} \int_{0}^{T} \sqrt{|x(t)|} \mathrm{d} t\right]^{2}} xr=[limT→∞T1∫0T∣x(t)∣dt]2
歪度: x r = [ lim T → ∞ 1 T ∫ 0 T ∣ x ( t ) ∣ d t ] 2 {x_{\mathrm{r}}=\left[\lim _{T \rightarrow \infty} \frac{1}{T} \int_{0}^{T} \sqrt{|x(t)|} \mathrm{d} t\right]^{2}} xr=[limT→∞T1∫0T∣x(t)∣dt]2
峭度: β = lim T → ∞ 1 T ∫ 0 T x 4 ( t ) d t {\beta=\lim _{T \rightarrow \infty} \frac{1}{T} \int_{0}^{T} x^{4}(t) \mathrm{d} t} β=limT→∞T1∫0Tx4(t)dt
其中:
信号的均值 μ x {\mu_{x}} μx反映信号中的静态部分,多数情况下表示振动的平衡位置;
均方根值反映信号的能量大小,相当于电学中的有效值,多用于评价振动等级或烈度;
方差 σ x 2 {\sigma_{x}^{2}} σx2仅反映了信号x(t)中的动态部分,反映振动信号以平衡位置为中心的幅值变化程度,若信号 x ( t ) x(t) x(t)的均值 μ x {\mu_{x}} μx为零,则均方值(均方根值的平方)等于方差。
歪度 α {\alpha} α表示信号的幅值概率密度函数 p ( x ) p(x) p(x)对纵坐标的不对称性, α {\alpha} α越大,越不对称(可参见后面的图3.4)。
峭度 β \beta β表示正态分布曲线的性状,当 β \beta β较小时表示分布曲线瘦而高,成为正峭度;当 β \beta β较大时,分布曲线具有负峭度,此时正态分布曲线峰顶的高度低于正常正态分布曲线(可参见后面的图3.5)。
第3种:以上参数是理论上的统计真值,实际工程信号采样长度有限,一般采用下述的估计值。以后不提示统计真值和估计值的区别,实际计算过程均为有限长度的估计值,有时为了说明问题方便,也常常使用统计真值的理论公式。
对于时间序列信号 x 1 , x 2 , … , x N x_1,x_2,…,x_N x1,x2,…,xN,有量纲幅域参数估计值的计算公式如下:
----------有量纲幅值参数(12个)----------
均值: x ˉ = 1 N ∑ i = 1 N x i {\bar{x}=\frac{1}{N} \sum_{i=1}^{N} x_{i}} xˉ=N1∑i=1Nxi
方差: σ x 2 = 1 N − 1 ∑ i = 1 N ( x i − X ˉ ) 2 {\sigma_{x}^{2}=\frac{1}{N-1} \sum_{i=1}^{N}\left(x_{i}-\bar{X}\right)^{2}} σx2=N−11∑i=1N(xi−Xˉ)2
均方根值(有效值): x r m s = 1 N ∑ i = 1 N x i 2 {x_{\mathrm{rms}}=\sqrt{\frac{1}{N} \sum_{i=1}^{N} x_{i}^{2}}} xrms=N1∑i=1Nxi2
均方值: x r m s 2 = 1 N ∑ i = 1 N x i 2 {x_{\mathrm{rms} 2}=\frac{1}{N} \sum_{i=1}^{N} x_{i}^{2}} xrms2=N1∑i=1Nxi2
均对平均幅值: ∣ x ˉ ∣ = 1 N ∑ i = 1 N ∣ x i ∣ {|\bar{x}|=\frac{1}{N} \sum_{i=1}^{N}\left|x_{i}\right|} ∣xˉ∣=N1∑i=1N∣xi∣
方根幅值: x r = [ 1 N ∑ i = 1 N ∣ x i ∣ ] 2 {x_{\mathrm{r}}=\left[\frac{1}{N} \sum_{i=1}^{N} \sqrt{\left|x_{i}\right|}\right]^{2}} xr=[N1∑i=1N∣xi∣]2
最大值: x max = max { x i } {x_{\max }=\max \left\{x_{i}\right\}} xmax=max{xi}
最小值: x min = min { x i } {x_{\min }=\min \left\{x_{i}\right\}} xmin=min{xi}
峰值: x p = max { ∣ x max ∣ , ∣ x min ∣ } {x_{\mathrm{p}}=\max \left\{\left|x_{\max }\right|,\left|x_{\min }\right|\right\}} xp=max{∣xmax∣,∣xmin∣}
峰峰值: x p − p = max { x i } − min { x i } {x_{\mathrm{p}-\mathrm{p}}=\max \left\{x_{i}\right\}-\min \left\{x_{i}\right\}} xp−p=max{xi}−min{xi}
歪(偏)度: α = 1 N ∑ i = 1 N x i 3 {\alpha=\frac{1}{N} \sum_{i=1}^{N} x_{i}^{3}} α=N1∑i=1Nxi3
峭度: β = 1 N ∑ i = 1 N x i 4 {\beta=\frac{1}{N} \sum_{i=1}^{N} x_{i}^{4}} β=N1∑i=1Nxi4
有量纲幅域参数的大小与信号(振动)绝对幅值有关,也就是和振动产生的工作条件有关,不同工作条件下的有量纲幅域参数不可比、为此构造了无量纲幅域参数。对于时间序列信号,无量纲幅域参数的计算公式如下:
波形指标: S f = x r m s ∣ x ˉ ∣ {S_{\mathrm{f}}=\frac{x_{\mathrm{rms}}}{|\bar{x}|}} Sf=∣xˉ∣xrms
峰值指标: C f = x max x r m s {C_{f}=\frac{x_{\max }}{x_{\mathrm{rms}}}} Cf=xrmsxmax
脉冲指标: I f = x max ∣ x ˉ ∣ {I_{\mathrm{f}}=\frac{x_{\max }}{|\bar{x}|}} If=∣xˉ∣xmax
裕度指标: C L f = x max x r {C L_{\mathrm{f}}=\frac{x_{\max }}{x_{\mathrm{r}}}} CLf=xrxmax
峭度指标: K r = β x r m s 4 {K_{\mathrm{r}}=\frac{\beta}{x_{\mathrm{rms}}^{4}}} Kr=xrms4β
偏度指标: P = α X m s 3 {P=\frac{\alpha}{X_{\mathrm{ms}}^{3}}} P=Xms3α
其中,
图3.6 为滚动轴承的振动幅值概率密度分布图。
另外,必须着重指出,信号的均值 x ˉ {\bar{x}} xˉ反映信号中的静态部分,一般对诊断不起作用,但对计算上述参数有很大影响。所以,一般在计算时应先从数据中去除均值,保留对诊断有用的动态部分,这一过程称为零均值化处理(也叫去直流分量),其计算方法如下:
表3.2 为齿轮振动信号的无量纲幅域诊断参数。新齿轮经过运行产生了疲劳剥落故障,振动信号中有明显的冲击脉冲,各幅域参数中除了波形参数外,均有明显上升。
图3.8为某滚动轴承振动信号的峭度指标和有效值随轴承疲劳试验时间的变化过程,可见.两个指标的变化符合上述规律。因此,要想取得较好的故障监测效果.一般可以采取以下措施:
import scipy.io as scio
import numpy as np
import matplotlib.pyplot as plt
from scipy import signal, fftpack, stats
from matplotlib import rcParams
config = {
"font.family": 'serif', # 衬线字体
"font.size": 10, # 相当于小四大小
"font.serif": ['SimSun'], # 宋体
"mathtext.fontset": 'stix', # matplotlib渲染数学字体时使用的字体,和Times New Roman差别不大
'axes.unicode_minus': False # 处理负号,即-号
}
rcParams.update(config)
fs = 1000
f = 10
n = np.arange(5120)
t = n/fs
x = 3 * np.sin(2 * np.pi * n * f/fs) + np.random.uniform(0,1, len(n)) #正弦信号3*sin(2*pi*10*t)+噪声信号
# x = np.random.uniform(-1,1, len(n))
plt.figure(figsize=(12,2))
plt.plot(t, x)
def interval_num_count(data, low, high):
'''
fun: 统计一维数据data落入某一个区间[low, high]内的数量
param low: 区间下限
param high: 区间上限
return count_num: 落入某一个区间[low, high]内的数量
'''
count_num = 0
for i in range(len(data)):
if data[i]>low and data[i]<high:
count_num += 1
return count_num
def plt_amp_prob_density_fun(data, n):
'''
fun: 绘制幅值概率密度函数
param data: 输入数据,1维array
param n: 分割成段数的数量
return: 绘制幅值概率密度函数
'''
xt = data
max_value = np.abs( xt[np.argmax( np.abs(xt) )] ) #
count_num = []
x = []
for i in range(n):
interval = max_value*2/n # 区间长度为interval_len
low = -max_value + i*interval # 区间下限
high = -max_value + (i+1)*interval # 区间上限
count = interval_num_count(data=xt, low=low, high=high) # 统计落入该区间的幅值个数
count_num.append(count)
x.append( (high+low)/2 )
count_num = count_num/np.sum(count_num)
plt.bar(np.arange(len(count_num)), height=count_num) # 绘制柱状图
plt.show()
plt_amp_prob_density_fun(data=x, n=100)
def get_time_domain_features(data):
x = data
#------有量纲指标------#
X_mean = np.mean(x) # 1.平均值
X_std = np.std(x) # 2.方差
x = x - X_mean # 零均值化(去直流分量)
X_rms2 = np.sum(x**2)/len(x) # 3.均方值
X_rms = np.sqrt(X_rms2) # 4.均方根值(有效值)
X_max = np.max(x) # 5.最大值
X_min = np.min(x) # 6.最小值
X_p = max(abs(X_max), abs(X_min)) # 7.峰值
X_pp = X_max - X_min # 8.峰峰值
X_avg = np.mean(np.abs(x)) # 9.平均绝对幅值
X_r = np.mean( np.sqrt(np.abs(x)) )**2 # 10.方根幅值
X_alpha = np.mean( np.power(x, 3) ) # 11.偏度(歪度)
X_beta = np.mean( np.power(x, 4) ) # 12.峭度
#-------无量纲指标-------#
X_wf = X_rms/X_avg # 13.波形指标
X_cf = X_pp/X_rms # 14.峰值指标
X_if = X_pp/X_avg # 15.脉冲指标
X_clf = X_pp / X_r # 16 裕度指标
X_pf = X_alpha / X_rms ** 3 # 17.偏度指标
X_kf = X_beta/X_rms ** 4 # 18.峭度指标
time_domain_features_list = [X_mean, X_std, X_rms2, X_rms, X_max, X_min, X_p, X_pp, X_avg, X_r, X_alpha, X_beta, X_wf, X_cf, X_if, X_clf, X_pf, X_kf]
time_domain_names_list = ['平均值', '方差', '均方值', '均方根值', '最大值', '最小值', '峰值', '峰峰值', '平均绝对幅值',
'方根幅值', '偏度', '峭度', '波形指标', '峰值指标', '脉冲指标', '裕度指标', '偏度指标', '峭度指标']
for i in range(len(time_domain_names_list)):
print(time_domain_names_list[i],':',time_domain_features_list[i])
return time_domain_features_list, time_domain_names_list
time_domain_features_list, time_domain_names_list = get_time_domain_features(data=x)
time_domain_features_list, time_domain_names_list = get_time_domain_features(data=x)
time_domain_features_list, time_domain_names_list = get_time_domain_features(data=x)
平均值 : 0.506101294634079
方差 : 2.1422782642540135
均方值 : 4.589356161495189
均方根值 : 2.1422782642540135
最大值 : 3.4797421092734804
最小值 : -3.4874981121547806
峰值 : 3.4874981121547806
峰峰值 : 6.967240221428261
平均绝对幅值 : 1.920591101461503
方根幅值 : 1.752480189593869
偏度 : -0.07538076391033736
峭度 : 32.72574911884685
波形指标 : 1.1154265281265827
峰值指标 : 3.2522573456881902
脉冲指标 : 3.627654119675153
裕度指标 : 3.9756456379931424
偏度指标 : -0.007667131112382436
峭度指标 : 1.5537676354880396
定义CWRU数据读取函数
def data_acquision(FilePath):
"""
fun: 从cwru mat文件读取加速度数据
param file_path: mat文件绝对路径
return accl_data: 加速度数据,array类型
"""
data = scio.loadmat(file_path) # 加载mat数据
data_key_list = list(data.keys()) # mat文件为字典类型,获取字典所有的键并转换为list类型
accl_key = data_key_list[3] # 获取'X108_DE_time'
accl_data = data[accl_key].flatten() # 获取'X108_DE_time'所对应的值,即为振动加速度信号,并将二维数组展成一维数组
return accl_data
使用CWRU轴承数据进行分析,选取了4个mat文件,包括内圈故障、外圈故障、滚动体故障和正常状态。
文件名解释(以“1730_12k_0.007-InnerRace”为例):
1730:转速,单位rpm
12k:采样频率,Hz
0.007:故障大小,单位inch,1inch=25.4mm
InnerRace:代表为内圈故障
绘制内圈故障的时域图和幅值概率密度函数
file_path = r'E:/研究生/pytorch/CSDN代码/fault_diagnosis_signal_processing/第6篇-时频域指标/1730_12k_0.007-InnerRace.mat'
data = data_acquision(FilePath=file_path)
print(data)
plt.figure(figsize=(12,2))
plt.plot(data)
plt.show()
plt_amp_prob_density_fun(data=data, n=100)
>>>输出结果
[ 0.22269856 0.09323776 -0.14651649 ... -0.36125573 0.31138814
0.17055689]
计算内圈故障的各幅域特征参数大小
get_time_domain_features(data=data)
>>>输出结果
平均值 : 0.004718397126522763
方差 : 0.3135712339852505
均方值 : 0.09832691878303272
均方根值 : 0.3135712339852505
最大值 : 1.6667390879034174
最小值 : -1.5402176785636486
峰值 : 1.6667390879034174
峰峰值 : 3.2069567664670657
平均绝对幅值 : 0.22413171955956412
方根幅值 : 0.1788814956202537
偏度 : -0.00040761964834175015
峭度 : 0.05115487013606729
波形指标 : 1.3990488923274307
峰值指标 : 10.227203323816086
脉冲指标 : 14.308357481792312
裕度指标 : 17.92782845060225
偏度指标 : -0.01322045690393005
峭度指标 : 5.291053175312336
可发现其峭度指标大于3,幅值概率密度函数偏瘦尖。
绘制正常状态的时域图和幅值概率密度函数图
file_path = r'E:/研究生/pytorch/CSDN代码/fault_diagnosis_signal_processing/第6篇-时频域指标/1730_48k_Normal.mat'
data = data_acquision(FilePath=file_path)
print(data)
plt.figure(figsize=(12,2))
plt.plot(data)
plt.show()
plt_amp_prob_density_fun(data=data, n=100)
>>>输出结果
[ 0.01460308 0.05444862 0.10764554 ... -0.02357354 0.00521538
0.04777292]
get_time_domain_features(data=data)
>>>输出结果
平均值 : 0.01245851422293584
方差 : 0.06469520385023537
均方值 : 0.004185469401223511
均方根值 : 0.06469520385023537
最大值 : 0.2712584088539872
最小值 : -0.3189145142229358
峰值 : 0.3189145142229358
峰峰值 : 0.590172923076923
平均绝对幅值 : 0.05170725167996645
方根幅值 : 0.04384435047720211
偏度 : -3.4532433523248354e-05
峭度 : 5.180413666679372e-05
波形指标 : 1.2511824115243202
峰值指标 : 9.12235974158347
脉冲指标 : 11.41373606026678
裕度指标 : 13.460637839390442
偏度指标 : -0.1275295794513686
峭度指标 : 2.9571686803135426
可发现其峭度指标在3左右,幅值概率密度函数与正态分布差不多。
绘制外圈故障的时域图和幅值概率密度函数图
file_path = r'E:/研究生/pytorch/CSDN代码/fault_diagnosis_signal_processing/第6篇-时频域指标/1730_12k_0.007-OuterRace3.mat'
data = data_acquision(FilePath=file_path)
print(data)
plt.figure(figsize=(12,2))
plt.plot(data)
plt.show()
plt_amp_prob_density_fun(data=data, n=100)
>>>输出结果
[ 0.10436457 0.62537525 0.12304461 ... 0.88689581 0.84588094
-0.5636499 ]
get_time_domain_features(data=data)
>>>输出结果
平均值 : 0.006673843393593249
方差 : 0.7975703939021197
均方值 : 0.6361185332291823
均方根值 : 0.7975703939021197
最大值 : 3.612380847225169
最小值 : -3.322787017046288
峰值 : 3.612380847225169
峰峰值 : 6.935167864271457
平均绝对幅值 : 0.6080145950947324
方根幅值 : 0.5062975339786826
偏度 : 0.04229527425007543
峭度 : 1.6551101479225734
波形指标 : 1.3117619220601988
峰值指标 : 8.695367728409641
脉冲指标 : 11.406252284438855
裕度指标 : 13.697810869771013
偏度指标 : 0.08336519532029546
峭度指标 : 4.090258951031924
可发现其峭度指标大于3,幅值概率密度函数顶部出现凹坑。
绘制滚动体故障的时域图和幅值概率密度函数图
file_path = r'E:/研究生/pytorch/CSDN代码/fault_diagnosis_signal_processing/第6篇-时频域指标/1730_12k_0.014-Ball.mat'
data = data_acquision(FilePath=file_path)
print(data)
plt.figure(figsize=(12,2))
plt.plot(data)
plt.show()
plt_amp_prob_density_fun(data=data, n=100)
>>>输出结果
[ 0.1054204 -0.10736962 -0.16340974 ... -0.5821675 0.07488259
0.56202555]
get_time_domain_features(data=data)
>>>输出结果
平均值 : 0.004535467952873973
方差 : 0.13361739428910718
均方值 : 0.017853608056610733
均方根值 : 0.13361739428910718
最大值 : 1.9846451308495212
最小值 : -1.7174139110666464
峰值 : 1.9846451308495212
峰峰值 : 3.7020590419161676
平均绝对幅值 : 0.09177927629408723
方根幅值 : 0.07371838887961654
偏度 : 0.0003906736827228592
峭度 : 0.004736237523606714
波形指标 : 1.4558558280734157
峰值指标 : 27.70641548289771
脉冲指标 : 40.33654645580015
裕度指标 : 50.21893584735956
偏度指标 : 0.16376653561183255
峭度指标 : 14.858722825401527
可发现其峭度指标远远大于3,幅值概率密度函数偏也十分瘦尖。
IMF是一个轴承全寿命周期数据,即在试验台上从正常跑到坏。IMF数据是每隔10分钟采集一次。
文件名是采集时间
如“2004.02.12.10.32”为2004年2月12日10:32采集。
本次数据选取的是一个最终跑出外圈故障的数据。
定义IMF数据读取函数
def IMF_data_acquision(FilePath, n):
"""
fun: 从IMF文件读取加速度数据
param file_path: mat文件绝对路径
return accl_data: 加速度数据,array类型
"""
data = np.loadtxt(fname=file_path)
accl_data = data[:, n]
return accl_data
file_path = r'E:/研究生/pytorch/CSDN代码/fault_diagnosis_signal_processing/第6篇-时频域指标/IMF_2nd_test_OF1/2004.02.12.10.32.39'
data = IMF_data_acquision(FilePath=file_path, n=0)
绘制时域图和幅值概率密度函数图、计算时域特征参数
print(data)
plt.figure(figsize=(12,2))
plt.plot(data)
plt.show()
plt_amp_prob_density_fun(data=data, n=100)
time_domain_features_list, time_domain_names_list = get_time_domain_features(data=data)
>>>输出结果
[-0.049 -0.042 0.015 ... -0.012 -0.012 0.02 ]
>>>输出结果
平均值 : -0.010195996093750001
方差 : 0.07347493104305192
均方值 : 0.005398565491781235
均方根值 : 0.07347493104305192
最大值 : 0.46419599609375
最小值 : -0.37580400390625
峰值 : 0.46419599609375
峰峰值 : 0.8400000000000001
平均绝对幅值 : 0.057688910923004155
方根幅值 : 0.04853102183425118
偏度 : 3.331677118397008e-05
峭度 : 0.00010575850683660837
波形指标 : 1.2736404599684148
峰值指标 : 11.432470749891692
脉冲指标 : 14.5608573044675
裕度指标 : 17.308516661134114
偏度指标 : 0.08399343541253229
峭度指标 : 3.628762642644256
遍历读取全寿命周期数据。并获取每次采集数据的时域特征参数大小。
base_dir = r'E:/研究生/pytorch/CSDN代码/fault_diagnosis_signal_processing/第6篇-时频域指标/IMF_2nd_test_OF1'
file_name_list = os.listdir(base_dir)
all_time_domain_features_list = []
for file_name in file_name_list:
file_path = os.path.join(base_dir, file_name)
data = IMF_data_acquision(FilePath=file_path, n=0)
time_domain_features_list, time_domain_names_list = get_time_domain_features(data=data)
all_time_domain_features_list.append(time_domain_features_list)
>>>输出结果
平均值 : -0.010195996093750001
方差 : 0.07347493104305192
均方值 : 0.005398565491781235
均方根值 : 0.07347493104305192
最大值 : 0.46419599609375
最小值 : -0.37580400390625
峰值 : 0.46419599609375
峰峰值 : 0.8400000000000001
...
峰值指标 : 7.003117715378994
脉冲指标 : 7.147508219574274
裕度指标 : 7.207950142678743
偏度指标 : 0.31703227680043844
峭度指标 : 1.3902259645328505
将list转为array
all_time_domain_features_arr = np.array(all_time_domain_features_list)
all_time_domain_features_arr
>>>结果输出
array([[-1.01959961e-02, 7.34749310e-02, 5.39856549e-03, ...,
1.73085167e+01, 8.39934354e-02, 3.62876264e+00],
[-2.58500977e-03, 7.53381213e-02, 5.67583252e-03, ...,
1.52497399e+01, 5.21419073e-02, 3.64829108e+00],
[-2.48398437e-03, 7.61892928e-02, 5.80480834e-03, ...,
1.77537992e+01, 3.28079981e-02, 3.51347531e+00],
...,
[-1.70307617e-03, 4.83832398e-01, 2.34093789e-01, ...,
2.50246000e+01, -3.77095385e-01, 7.89175523e+00],
[ 1.85683594e-03, 9.87327986e-04, 9.74816551e-07, ...,
1.46340168e+01, 5.79698251e-01, 6.63751264e+00],
[-1.16196289e-03, 9.99554810e-04, 9.99109819e-07, ...,
7.20795014e+00, 3.17032277e-01, 1.39022596e+00]])
绘制整个周期的每个时域特征参数大小变化
for i in range(len(time_domain_features_list)):
plt.figure(figsize=(12,3))
plt.plot(all_time_domain_features_arr[:,i])
plt.title(time_domain_names_list[i])
plt.show()
可发现: