赞
踩
刚刚研究了一下信号的概率密度曲线,还挺有趣的。所谓概率密度曲线,横轴为信号幅值,纵轴为幅值出现的频率。只要次数足够大,频率可以表示概率。
1.构造曲线F1 与 F2 和 F3
F1 = np.sin(w*t+phi1) 简谐信号
F2 = F1+np.sin(2*w*t+phi2) 一倍频与二倍频信号的叠加
F3 = np.exp(-0.05*t)*F1 衰减的简谐信号
2. 概率密度分析
F1的概率密度曲线
F2的概率密度曲线
早已衰减为0时,F3的概率密度曲线,如果继续衰减,下面这条曲线就变为当x=0时,y接近于1。
刚开始衰减为0时,F3的概率密度曲线
3.验证
我将上面各个图的概率都加了一遍,都接近于1。
4.感想
所以采集到的信号为简谐曲线或稍微带点杂波时,其概率密度曲线如图1,类似二次函数y=x**2。
采集到的信号为多倍频的简谐曲线叠加或者多分频的简谐曲线叠加,那么就如图2,有好多峰尖。
至于衰减信号,实际中基本不会出现吧,除非阻尼越来越大,最后机器都不能旋转了,这种时候,采集到的就是衰减信号。
对于轴承信号,无故障时,很明显是一个正态分布曲线,出现故障时可明显观察到曲线的高矮 胖瘦发生变化。
滚动轴承发内圈或外圈发生疲劳剥落时,曲线就由原本的较瘦的正态分布曲线变为一个较胖的正态分布曲线,这表明高幅值在信号中的占比急剧增加。
5.代码
- import numpy as np
- from collections import Counter
- import matplotlib.pyplot as plt
-
- plt.rcParams['font.sans-serif']=['SimHei'] #中文宋体
- plt.rcParams['axes.unicode_minus'] = False #显示正负号
-
-
- dt = 0.00001
- t = np.linspace(0,100,int(100/dt))
- f = 10
- w = 2*np.pi*f
- phi1 = 20/180*np.pi
- phi2 = 60/180*np.pi
- F1 = np.sin(w*t+phi1)
- F2 = F1+np.sin(2*w*t+phi2)
-
- F1 = np.around(F1,3)
- count1 = Counter(F1) #统计信号各个幅值出现个数
-
- F2 = np.around(F2,3)
- count1 = Counter(F2)
-
-
- F3 = np.exp(-0.05*t)*F1
- F3 = np.around(F3,3)
- count1 = Counter(F3)
-
- # ===================================================================
- # 上面构造了三个曲线,下面开始统计并绘制概率密度曲线。由于步骤是重复的,只给出了一个。
- x=[]
- y=[]
- count1_ = sorted(list(count1.items()))
- for i in count1_:
- x.append(i[0])
- y.append(i[1])
- y_ = np.array(y)/sum(y) #出现次数/总次数=出现概率
- x_ = np.array(x)
-
- plt.figure(1)
- plt.plot(x_,y_,'r--')
-
-
-
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。