主要内容

envspectrum

机械诊断的包络谱

描述

例子

西文= envspectrum (xfs返回信号的包络谱x以一个速率采样fs.如果x是矩阵,则该函数独立计算每一列的包络谱,并返回西文

例子

西文= envspectrum (xt返回存储在MATLAB中的信号的包络谱®时间表xt

例子

西文= envspectrum (___名称=值使用名称-值参数为前面的任何语法指定附加选项。选项包括用于计算包络信号的算法和用于估计频谱的频带。

西文fenvt= envspectrum(___返回f的频率向量西文计算;env,包络信号;而且t,泰晤士报env计算。

envspectrum (___在没有输出参数的情况下,绘制当前图中的包络信号和包络频谱。

例子

全部折叠

模拟两个振动信号,一个来自健康轴承,一个来自损坏轴承。计算并比较它们的包络谱。

节径为12厘米的轴承有8个滚动元件。每个滚动元件直径为2厘米。外部赛车保持静止,内部赛车以每秒25圈的速度行驶。加速度计对10千赫的轴承振动进行采样。

Fs = 10000;F0 = 25;N = 8;D = 0.02;P = 0.12;

来自健康轴承的振动信号包括几个阶的驱动频率。绘制0.1秒的数据。

T = 0:1/fs:1-1/fs;z = [1 0.5 0.2 0.1 0.05] * sin(2 *π* f0 *(1 2 3 4 5]。* t) / 5;Plot (t,z) xlim([0.4 0.5])

图中包含一个轴对象。axis对象包含一个line类型的对象。

轴承外圈的缺陷对轴承造成一系列5毫秒的影响。最终,这些冲击导致轴承磨损。冲击发生在轴承的球通过频率外圈(BPFO)处,

B P F O 1 2 n f 0 1 - d p 因为 θ

在哪里 f 0 是驾驶速度,n是滚动元件的个数,d为滚动元件的直径,p是轴承的节径,和θ为轴承接触角。假设接触角为零,计算BPFO。

Ca = 0;Bpfo = n*f /2*(1-d/p*cos(ca))
Bpfo = 83.3333

模型每个冲击作为一个3千赫正弦波窗口由一个平顶窗口。将冲击与梳状函数进行卷积,使其具有周期性。绘制0.1秒的数据。

fImpact = 3000;tImpact = 0:1/fs:5e-3-1/fs;xImpact = sin(2*pi*fImpact*tImpact).*flattopwin(length(tImpact))'/10;xComb = 0 (size(t));xComb(1:fs/bpfo:end) = 1;x = conv(xComb,xImpact,“相同”) / 3;Plot (t,x+z) xlim([0.4 0.5])

图中包含一个轴对象。axis对象包含一个line类型的对象。

在信号中加入高斯白噪声。指定噪声方差为1/30²。绘制0.1秒的数据。

yGood = z + randn(size(z))/30;yBad = x+z + randn(size(z))/30;plot(t,yGood,t,yBad) xlim([0.4 0.5])“健康”“受损”

图中包含一个轴对象。axis对象包含2个line类型的对象。这些对象代表健康、受损。

计算并绘制包络信号和光谱。

envspectrum([yGood' yBad'],fs) xlim([0 10*bpfo]/1000)

图中包含2个轴对象。标题为Envelope Signal的Axes对象1包含2个类型为line的对象。标题为Envelope Spectrum的坐标轴对象2包含2个类型为line的对象。

将峰值位置与BPFO的谐波频率进行比较。包络谱中的BPFO谐波是轴承磨损的标志。

harmImpact = (1:10)*bpfo;[X,Y] = meshgrid(harmImpact,ylim);持有情节(X / 1000 Y”:k”)传说(“健康”“受损”“BPFO谐波”)举行

图中包含2个轴对象。标题为Envelope Signal的Axes对象1包含2个类型为line的对象。标题为Envelope Spectrum的Axes对象2包含12个类型为line的对象。这些对象表示健康、损坏、BPFO谐波。

计算信号的韦尔奇谱。请指定频率分辨率为5hz。

图pspectrum([yGood' yBad'],fs,“FrequencyResolution”5)传说(“健康”“受损”

图中包含一个轴对象。标题为Fres = 5hz的axis对象包含2个line类型的对象。这些对象代表健康、受损。

在频谱的低端,驱动频率及其阶数掩盖了其他特征。健康轴承的光谱和损坏轴承的光谱是无法区分的。

xlim (10 * bpfo [0] / 1000)

图中包含一个轴对象。标题为Fres = 5hz的axis对象包含2个line类型的对象。这些对象代表健康、受损。

故障轴承的频谱显示了冲击频率调制的BPFO谐波。

xlim ((bpfo * [10] -10 + fImpact) / 1000)

图中包含一个轴对象。标题为Fres = 5hz的axis对象包含2个line类型的对象。这些对象代表健康、受损。

生成一个双通道信号,类似于每10毫秒完成一次旋转的轴承的振动信号。信号以10 kHz采样0.2秒,对应20个轴承旋转。

Fs = 10000;Tmax = 20;MLT = 0.01;T = 0:1/fs:mlt-1/fs;

在每个10毫秒的间隔内:

  • 第一个通道是阻尼正弦信号,阻尼常数为700,正弦波频率为600hz。

  • 第二个通道是另一个阻尼正弦波,阻尼常数为800,正弦波频率为500hz。第二个信道滞后于第一个信道5毫秒。

画出信号。

Y1 = sin(2* *600*t).*exp(-700*t);Y2 = sin(2* *500*t).*exp(-800*t);Y2 = [Y2 (51:100) Y2 (1:50)];T = (0:1/fs:mlt*tmax-1/fs)';Y = repmat([y1;y2],1,tmax)';情节(T, Y)

图中包含一个轴对象。axis对象包含2个line类型的对象。

使用时间间隔创建持续时间数组T.用持续时间阵列和双通道信号构造一个时间表。

dt =秒(T);ttb =时间表(dt,Y);

使用envspectrum没有输出参数显示两个通道的包络信号和包络频谱。计算整个Nyquist区间的频谱,不包括两端的100hz区间。

envspectrum (ttb“乐队”4900年[100])

图中包含2个轴对象。标题为Envelope Signal的Axes对象1包含2个类型为line的对象。标题为Envelope Spectrum的坐标轴对象2包含2个类型为line的对象。

信号的包络谱在1/0.01 = 0.1 kHz重复率的整数倍处具有峰值。这是意料之中的。envspectrum去除高频正弦分量,专注于低频重复行为。这就是包络谱是分析旋转机械的有用工具的原因。

计算包络信号和它被计算的时间。检查输出变量的类型。

[~,~,ttbenv,ttbt] = envspectrum(ttb, ttb, ttbt)“乐队”4900年[100]);谁ttb *
名称大小字节类属性ttb 2000x1 48977时间表ttbenv 2000x1 48985时间表ttbt 2000x1 16002 duration

时间向量是持续时间类型,例如输入时间表的时间值。输出时间表与输入时间表的大小相同。

将输入时间表的每个通道存储为单独的变量。计算包络信号和时间矢量。检查输出类型。

btb =时间表(dt,Y(:,1),Y(:,2));[~,~,btbenv,btbt] = envspectrum(btb,“乐队”4900年[100]);谁btb *
名称大小字节类属性btb 2000x2 49199时间表btbenv 2000x2 49219时间表btbt 2000x1 16002 duration

输出时间表与输入时间表的大小相同。

产生一个以1千赫采样的信号,持续5秒。该信号由0.01秒的矩形脉冲组成,每T= 0.25秒。将信号调幅到载频150hz的正弦波上。

Fs = 1e3;Tmax = 5;T = 0:1/fs:tmax;Y = pulstran(t, 0:25:tmax,rectpuls=0.01);Fc = 150;Z =调制(y,fc,fs);

绘制原始信号和调制信号。只显示前几个循环。

情节(t t, y,, z,“-”网格)轴([0 1 -1.1 1.1])

图中包含一个轴对象。axis对象包含2个line类型的对象。

计算信号的包络和包络谱。使用复杂解调确定信号包络。计算以载波频率为中心的20hz区间的包络频谱。

[q,f,e,te] = envspectrum(z,fs,Method=“解调”,乐队= [fc-10 fc + 10]);

绘制包络信号和包络谱。放大从0到50 Hz的间隔。

Subplot (2,1,1) plot(te,e) xlabel(“时间”)标题(“信封”) subplot(2,1,2) plot(f,q) xlim([0 50])“频率”)标题(“包络谱”

图中包含2个轴对象。带有Envelope标题的Axes对象1包含一个line类型的对象。标题为Envelope Spectrum的Axes对象2包含一个类型为line的对象。

包络信号具有相同的时间周期,T= 0.25秒,作为原始信号。包络谱在1 /处有脉冲T= 4hz。

重复计算,但是现在使用希尔伯特函数来计算包络线。使用10阶有限脉冲响应(FIR)滤波器对信号进行带通滤波。的内置功能绘制包络信号和包络频谱envspectrum

envspectrum (z, fs,方法=“希尔伯特”FilterOrder = 10)

图中包含2个轴对象。标题为Envelope Signal的Axes对象1包含一个line类型的对象。标题为Envelope Spectrum的Axes对象2包含一个类型为line的对象。

将信号嵌入方差为1/3的高斯白噪声中。画出结果。

Zn = z + randn(size(z))/3;情节(t、锌、“-”网格)轴([0 1 -1.1 1.1])

图中包含一个轴对象。axis对象包含一个line类型的对象。

计算并显示包络信号和包络频谱。在以载波频率为中心的10hz区间上使用复解调计算包络频谱。放大从0到50 Hz的间隔。

envspectrum(zn,fs,Band=[fc-5 fc+5]) xlim([0 50])

图中包含2个轴对象。标题为Envelope Signal的Axes对象1包含一个line类型的对象。标题为Envelope Spectrum的Axes对象2包含一个类型为line的对象。

输入参数

全部折叠

输入信号,指定为矢量或矩阵。如果x是一个矢量,它被视为一个单一通道。如果x是矩阵吗envspectrum的对应列中独立地计算包络谱并返回结果西文

例子:因为(π/ 4 * (0:159))+ randn (1160)是单通道行向量信号。

例子:因为(pi. / (4; 2) * (0:159)) ' + randn (160 2)是一个双通道信号。

数据类型:|
复数支持:金宝app是的

采样率,指定为正的实标量。

数据类型:|

输入时间表。xt必须包含递增的有限行次数。如果xt表示多通道信号,则它必须具有包含矩阵的单个变量或由向量组成的多个变量。

如果时间表有丢失或重复的时间点,您可以使用中的提示来修复它缺少、重复或不均匀时间的清晰时间表

例子:时间表(秒(0:4)”,randn (2))指定以1hz采样4秒的双通道随机变量。

数据类型:|

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。

在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字在报价。

例子:“方法”、“希尔伯特’,‘FilterOrder’,‘带’,[0fs/ 4)使用30阶带通滤波器计算0到1 / 2奈奎斯特频率之间的包络频谱,并计算分析信号的包络。

计算包络信号的算法,指定为任意一种“希尔伯特”“解调”.有关更多信息,请参见算法

用于计算包络谱的频带,指定为在0和奈奎斯特频率之间严格递增值的两元向量。

数据类型:|
复数支持:金宝app是的

FIR过滤器顺序,指定为正整数标量。

  • 如果方法“希尔伯特”,则此参数指定FIR带通滤波器的阶数。

  • 如果方法“解调”,则此参数指定FIR低通滤波器的阶数。

数据类型:|

输出参数

全部折叠

包络谱,以矢量或矩阵形式返回。

包络谱计算的频率,以矢量形式返回。

包络信号,以矢量、矩阵或时间表的形式返回。

如果输入为envspectrum那么,有时间表吗env也是一个时间表。的时间值env具有与输入时间表的时间值相同的格式。

  • 如果输入是一个时间表,其中一个变量包含一个矩阵,那么env只有一个包含矩阵的变量。

  • 如果输入是由向量组成的多个变量的时间表,则env有多个由向量组成的变量。

计算包络信号的时间值,作为矢量返回。

如果输入为envspectrum那么,有时间表吗t具有与输入时间表的时间值相同的格式。

算法

envspectrum最初消除输入信号的直流偏置,x,然后计算包络信号。

  • 如果方法设置为“希尔伯特”,函数为:

    1. 带通滤波信号。FIR滤波器的顺序由FilterOrder截止频率在英国航空公司(1)而且英国航空公司(2),在那里英航是否使用了指定的频带乐队

    2. 计算分析信号希尔伯特函数。

    3. 计算包络信号作为解析信号的绝对值。

  • 如果方法设置为“解调”,函数为:

    1. 对信号进行复杂解调。信号乘以exp (j2πf0t,在那里f0= (英国航空公司(1)+英国航空公司(2)) / 2

    2. 对解调后的信号进行低通滤波,计算分析信号。FIR滤波器的顺序由FilterOrder和一个截止频率英国航空公司(2)- - - - - -英国航空公司(1)) / 2

    3. 将包络信号计算为解析信号绝对值的两倍。

在计算包络信号后,该函数从包络中去除直流偏置,并使用FFT计算包络频谱。

参考文献

兰德尔,罗伯特·邦德。基于振动的状态监测.英国奇切斯特:John Wiley & Sons出版社,2011年。

扩展功能

C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。

版本历史

在R2017b中引入