声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1916|回复: 0

[其他相关] 振动诊断基础——傅里叶变换

[复制链接]
发表于 2022-8-4 13:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
众所周知傅里叶变换是振动诊断的基础,可以说正是有了它才有了现在的故障诊断这个学科。然而对于大多数故障诊断的现场从业人员而言傅里叶变换更像是一个黑盒子,我们所使用的软件会自动帮我们进行数据处理而无需我们去学习这之中令人头疼的数学处理过程。更重要的是即便学会了它也不会对我们的诊断水平有质的提高,仅仅只是能让我们对信号处理以及信号的认知上有些许提升。但即便如此,学习下傅里叶变换还是能在某些方面稍微提升点姿势水平的。

傅里叶变换按分类分4种,这之中于振动诊断关系最接近的是离散傅立叶变换DFT,也是快速傅里叶变换FFT的核心。更凑巧的是DFT的数学计算过程完全不涉及任何高等数学知识,往上只涉及序列的乘法求和运算,往下也就到高中里学过的复数这一概念。因此从离散周期傅立叶变换DFT入手,逐步展开学习数字信号处理这门大课程是十分适合如笔者这样数学基础极差的从业人员的。

1.连续时间信号和离散时间信号

问:为什么要学习连续时间信号和离散时间信号?

答:学习这两个的基本概念能让我们对信号处理的数学过程形成初步映像,且连续信号的离散化过程本身涉及到采样的概念,这是振动诊断里非常重要的一环。最为重要的是离散时间信号是数字信号处理过程中的基本元素,即序列。可以说,数字信号处理这门课程就是在讲如何对序列进行处理,以及处理会得到什么样的结果。

信号就是以随时间变化的某种物理量,按照时间变化是否连续分成连续时间信号和离散时间信号两大大类,我们以一个正弦波为例来介绍它们。
1.png
这是从数学公式的角度来描述一条连续的正弦波,公式中t为时间自变量,它可以在取值范围取任何一个数,此时无论t等于多少都会有一个相对应的函数值x(t)与其对应。哪怕t=圆周率π这个无穷无尽的数字,也会有一个函数值x(π)与其对应,此时x(π)处在x(3.13)和x(3.15)之间的某个位置上。因为t在取值区间内是连续的,所以这个公式是一个连续函数;又因为函数的自变量是时间t,所以这个正弦波就是一个连续时间信号。一般我们用圆括号( )把自变量括在里面来表示一个连续信号,如上面公式里的x(t)。

举个例子:我们来随便画一下这个正弦连续时间信号的图像,我们很随意的把t的取值范围定在[0,4]。
2.png
如图1中显示的是时间自变量t=0~4时的正弦波连续时间信号。x轴的自变量时间t的单位可以是秒s,也可以是小时h或者其它表示时间的单位。同理Y轴的幅值也可以是任何物理量,振动速度的mm/S或者温度的℃之类的都可以,当然在振动诊断中一般是加速度传感器采集的加速度值g。我们暂时不需要确定信号单位到底是啥,在后面实际应用的时候才会去考虑单位的问题。

离散时间信号

离散时间信号既是对连续时间信号进行等间隔的离散采样得到后的信号,它的基本表达形式是一个数据序列:
3.png
注意离散时间信号一般用方括号[]把变量括在里面来表示,且一般都是用小写的字母n来代表离散时间自变量。注意n只取整数,且由于DFT处理的需要,n所取的最小值为0(在下一节离散时间信号周期化中会对此进行解释);所能取到的最大值等于离散时间数据点的总个数N减去1。

下面我们通过对图1中所示的正弦波连续时间信号进行离散采样,演示下离散采样的过程。

我们决要对图1中的连续时间信号进行等间隔离散采样,那我们必须决首先确定到底要采集多少个离散数据点,即N的值。本例中我们假装要采集N=16个数据点,那我们需要将x轴分成16份即将公式1中的自变量t的长度l除以N,即可得到每一份的时间增量δt。

在本例中
4.png
如图2所示,我们从tmin=0的时间点开始,以增量δt为间隔连续画上16条竖线(图中的红色虚线),尤其要注意的是第一条竖线出现在t=0的时间点上,代表我们从这个时间点开始取样。这些竖线和连续信号的交点(图中以黑色的‘O’标注)就是我们离散采样得到的数据点。特别注意t=4时的数据点(图中以红色‘o’标注)是肯定不会被我们离散采样采集到的,原因在下一节的离散时间信号周期化中进行专门进行解释。接着我们给这些红色的竖线标上序号,代表这是第几根竖线,同时也代表这是第几个数据点。

我们用抽样序列也就是离散时间自变量n来表示这些序列号。

本例中

n=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]       上面说过n从0开始的原因会在下一节进行说明。

那我们可以建立其正弦离散时间信号的自变量n和正弦连续时间信号的自变量t的逻辑关系,并推导出两种信号值的对应关系。
5.png
也就是说:当n=0时的正弦离散时间信号的值x[0]等于t=0   时正弦连续时间信号的值x(0);

当n=7时的正弦离散时间信号的值x[7]等于t=1.75时正弦连续时间信号的值x(1.75);
6.png
那么现在我们把16个离散数据点对应的连续信号函数值算一下然后拿出来按照顺序写成一个序列:

我们只写出其中4个数据点的计算过程供参考:
7.png
看着和图1的连续信号并不像,这是因为我们设定的数据点总个数N太小。N的取值越高则时间曾增量δt就越小,得到的离散信号越接近连续信号;N值越低,时间增量δt越大,得到的离散信号越偏离连续信号。
8.png

2.离散时间信号的周期化

信号除了上面说的那样分成连续信号和离散信号之外,也可以按照是否呈现周期性分成周期信号和非周期信号。

这样总的说我们将信号分成了4大类,每一类都有对应的傅里叶变换形式。

l 连续非周期信号-傅里叶变换

l 连续周期信号-傅里叶级数

l 离散非周期信号-离散时间傅里叶变换

l 离散周期信号-离散傅里叶变换

这四种变换中,只有离散离散周期信号能够被计算处理,因为计算机只能处理有限的离散信息。但是我们在上节的末尾只采集到了一段离散时间信号,它虽是有限个数据点但没有周期性,所以它是一个离散非周期信号。而事实证明,要合成一个非周期信号需要有无穷多个正弦波,所以计算机根本不能处理非周期的信号。

所以为了能让计算机能够通过傅里叶变换处理我们需要将一段离散的非周期时间信号在形式上周期化,让其能被计算机处理。当然只是在形式上,并不需要真的把它变成一个周期信号。实际上DFT的数学计算过程完全不需要周期化,我们一旦用DFT处理了信号就默认了对其周期化。在以后了解DFT性质的时候才需要,所以这一段不看也没啥。

形式上周期化的方法也很简单,只需要将采集到的离散时间信号视作一个完整的周期,然后向左右平移无穷多个周期即可。

这是我们在上面离散采样得到的正弦离散时间信号:
9.png
接着我们将这个0-15的离散数据点序列整体当作一个周期,再将其按周期左右平移无限多次即实现了周期化的目标。
10.png
这也解释了我们上节的一个问题,为什么一个周期内连续信号的最后一个数据点在离散的过程中肯定采不到?因为这个点在离散再周期化之后被认为是下一个周期的第一个点。注意图中箭头标注的黑色‘*’这个点,这个点是我们通过向右拓展一个周期得到信号的第一个数据点,即用黑色线连起来的这个周期的第一个数据点。

现在我们也可以解释下上一节遗留下来的另一个问题,为何抽样序列n必须从0-15,而不用更习惯的1-16?离散信号是对连续信号离散抽样构成的,在信号学中有一个基本要求就是对时间的描述必须足够精确。抽样序列从0开始可以保证得到的离散信号在x轴上的出发点和连续信号相同;而如果从1开始就会导致离散信号的开始时间点比连续信号滞后一个时间增量δt。
11.png
如图所示的那样,当抽样序列为1-16的时候可以取到最后一个数据点t=4的数据点。但这个情况下,离散信号在x轴上的开始时间点为0.25,而不是连续信号的0点。

现场设备在运行期间所产生的振动就是连续非周期信号,在设备运行期间随随便哪个时间点都有一个振动大小值,时间的连续性决定了这是个连续信号,振动值的随机性决定了信号是非周期的。

我们用仪器去现场采集振动是不可能采集到连续信号的,设备采集了一个时间点的振动大小后,采集下一个时间点时必然要跨过一个时间增量,该增量和采样频率等有关。所以时间变得不连续了,因此我们采集到的是离散信号,且由于振动值的随机波动导致了这也是个非周期信号。

离散非周期信号按傅里叶变换的理论需要用无限多个正弦波和余弦波来描述,计算机肯定处理不了。所以我们需要假装的将采集到的信号左右无限拓展,使其像是一个周期信号让计算机能够应用DFT对其进行处理。

3.序列的计算法则

在上面的离散过程中我们已经获得了离散时间信号序列,现在我们要了解一些序列的数学计算法则,以便我们下面对信号进行数学处理。DFT的过程中只用到序列的2个基本运算,即两个序列相乘和单个序列内部求和。
12.png
序列相乘

只需要将序列中对应位置的元素相乘后按顺序排列即可。
13.png
序列内部元素求和

只需要将序列内部所有数据点相加得到一个确切的数值即可。

两序列先相乘再对得到的新序列在对其内部元素求和

把上面两种运算结合起来看看
14.png
DFT 离散傅立叶变换

我们写一下离散傅里叶变换的公式
15.png
频域信号和时域信号都是对信号从不同角度的描述,两者完全可以互相代替互相描述。我们花点时间介绍下这个地方大写的X[k]频域信号,它并不是我们常用的频谱!频域X[k]内的数据点一般都是写成复数形式a+bj,如X[8]=0.75-0.4j,就表明频域内序列号为8的数据点值为0.75-0.4j。写成复数是因为频域信号包含了频谱和相位谱两种信息,对频域信号内的复数数据点取模操作后得到频谱序列,而计算arctanb/a的值即可得到相位序列。接着通过时间增量得到频率增量在代进去就得到了频谱和相位谱,这个过程我们后面再说。

回到上面的公式,好像有点看不懂,我们把欧拉公式代进来。
16.png
看到了这样的公式有些即视感?我们先按照数学计算的过程来介绍整个过程。

第一步是计算下面这两东西
17.png
我们先看右边正弦函数sin什么什么的这个,在离散化连续信号里见过这个公式,只不过现在把里面的一个数字l换成了一个整数序列k,凑巧的是序列k和序列n一模一样,都是0~N-1,所以只要知道了N的大小,那这个公式里就没有未知量了,而N的大小时域信号x[n]就告诉我们了。

总结一下这个公式的意思那就很明显了:k=1的时候就画1个周期的正弦波,然后对它离散采样,把采样的结果拿出来写成序列,然后按这个过程计算k等于序列里其他值时对应的离散采样序列。当然k=0是一个比较特殊的情况,这时候画出来的图形是一条直线,而且因为sin0=0,所以这条线对应的y轴是0。

具体的过程参考下面的图,图中N=64 。
18.png
上图所有的x轴都代表抽样序列n=0~63。当k等于多少时就画多少个正弦波(图中黑色实线),然后按64个数据点进行采样(图中红色‘o’点),也注意下上面提到过的无论怎么采样实线的最后一个数据点就是采不到的现象。

有心的朋友能改能从上图发现几个有意思的现象:

1.k=0时和k=32时的图像里离散采样后的结果(红色‘o’点)是一模一样的,因为k=32和k=0都是奈奎斯特频率;

2.除了k=31和k=33的离散采样结果(红色‘o’点)很像,但是你仔细看就会发现完全不一样,k=32的离散采样结果要于x轴上下翻转一次才能正好等于k=33的结果,同样的现象还出现在k=1和k=63,k=28和k=36,k=3和k=61这三组上,尤其是k=1和k=63这对最明显。

3.还有一个特点就是k=某一个值时的采样结果自身也有规律性,注意观察k=1时的图像,图像里序列号n=1的值和n=63的值互为负数,即s[1]=-s[63],其他的对应序列也有这样的规律。

这个现象揭示了DFT的一些特性,虽然现在看不出来,但是请别忘记我们只是对正弦函数sin就行处理,还没有对余弦cos函数做同样的处理,结合这两个函数处理之后的图像就能得到DFT的一个重要特性:离散采样得到的N个时域数据得到了N个离散的频域数据点,对其求模得到了N个频谱离散数据点,这些数据点除了第一个抽样序列号为0的点以外,其他的数据点的大小呈现对称相等的特性,对称点为N/2。

上面的过程全部做完了我们最终得到了共N个包含N个数据点的序列,我们假设对正弦函数离散得到的那一堆序列为sk[n]。
19.png
至此这一步完成。

第二步是上一步得到的序列代代进原来的公式,我们同样分开看
20.png
第二步,计算频域X[1]

当K=1时,
21.png
照上面的步骤我们可以计算出全部频域信号序列。

观察上面的频域信号序列可以发现一个特征,除去最特殊的第一个点X[0]以外,剩下复数数据点大体分成2部分,x[1],x[2],x[3]和x[4],x[5],x[6]。明显可以看出x[1]和x[6]对应,是一个对共轭复数。其他的x[2]对应x[5],x[3]对应x[4]。这种扭曲的对称性会在下面将频域转换成频谱的时候给我们带来相当大的麻烦,而造成这种局面的原因是我们为方便应用FFT计算而使用周期化导致的,详细的内容我们下一节再说。

频域转换成频谱

上面的过程中我们已经得到频域了,现在我们介绍如何把它变成频谱。这里引用一个实际的例子。对频域序列每一个数据点求模就得到了频谱序列
22.png
看起来不像正常的频谱是因为时域数据点太少了只有7个,我们现场采集的时域数据少则几千个,多则几十万个。画出来的谱就闲的正常了,当然计算量非常的巨大。

在上一节我们提到过频域有一种扭曲的对称性,请注意观察上面的频谱图,你会发现正是由于X[3]和X[4]是共轭复数,所以它们的模是一样的,也就是A[3]=A[4]=4.5007。图中其他的还有A[2]=A[3]=3.2285和A[4]=A[5]=1.8221。这个特性无论采样点N等于多少都会出现。同样你仔细看也会发现相位谱也有同样的扭曲对称性。

那为什么会这样?这样对我们得到的频谱有什么影响?

这个问题虽然必须要慎重对待,但是本身却无关紧要也很好解决,只是理解起来就相当的麻烦,因为牵扯到一个特殊的玩意‘负频率’。负频率这个东西究其根源是连续周期傅里叶变换中出现的,在离散周期傅里叶变换中为了方便计算对公式做了适当的处理。

离散傅里叶变换的第一步是对涉及的余弦和正弦函数组离散抽样,同上面的例子我们还是用正弦函数来说明。先写出公式
23.png
问题就出在公式中的2π上,2π是什么?2π默认了这个正弦函数的取值区间是[0,2π],可实际上连续周期傅里叶变换中正弦函数的取值区间是[-π,π],当中的-π~0就是所谓的负频率。两个取值区间的跨度都是2π,但是出发点和截止点不一样。离散傅里叶中改变取值区间可以方便我们运用离散化计算。

我们画那一大堆正弦波的时候本来应该从-π画到π的,但是为了方便我们画成了0-2π。
24.png
这样的话,我们把上面这个例子的过程画完整了你就能发现,我们为了方便公式计算认为的把-3~-1这3个负频率换成了4~6这3个。
25.png
26.png
至此基本就全部结束了,实际上全篇看下来之后你会发现这些东西压根就没什么用,因为你用的仪器和软件都帮你处理好了,你更需要的理论是旋转设备诊断上的东西。即便笔者学习DFT也只是为了解答曾经迷惑很久的一个问题:当滚动轴承外圈有一个缺陷的时候,我们知道会产生一系列的冲激串,每个冲激之间的间隔就是外圈故障频率,频谱上会有一系列的外圈故障频率和它的谐波。那么如果外圈有两个缺陷,且滚动体通过两个缺陷产生的冲激大小一样的时候,频谱会怎么样呢?

要解答这个问题光凭本文介绍的东西还完全不足够,还必须去了解DFT的几个性质。也只有这几个性质是需要我们真正去了解学习的。这个问题的解答笔者在论坛的日志里有,频谱的成分不会变化还是外圈故障频率和一堆谐波,只是这些频率成份的幅值会有明显规律的波动变化,本质原因是频域信号时间平移后导致相位谱发生变化所致。

回复
分享到:

使用道具 举报

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-4-19 18:33 , Processed in 0.085329 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表