本文主要是介绍信号的概率密度曲线,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
刚刚研究了一下信号的概率密度曲线,还挺有趣的。所谓概率密度曲线,横轴为信号幅值,纵轴为幅值出现的频率。只要次数足够大,频率可以表示概率。
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 pltplt.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--')
这篇关于信号的概率密度曲线的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!