信号的分解方式很多,大家最常用也最熟知的就是傅里叶变换了,然而有很多非常基础的分解方式往往不为人所知。他们的目的都是以某种方法去完美的分解并重建/还原信号,闲来无事,娓娓道来。
1, 冲击分解(Impulse Decomposition)
冲击分解法对信号的采样,连续时间信号的离散化,线性时不变系统的构建提供了很大的帮助。如下图左图所示,一个N单位长度的信号被分解成位置不同,大小不同的N个点类,类似于一个个的向量。(注:向量是既有大小,又有方向的。)冲击分解法是卷积的根基。
举例,这种分解方式就好像是之前大家玩过拼图游戏一样,(By the way,你要是没玩过这种拼图游戏就说明你老了)。先对图像进行冲击分解(此处的冲击就是一个个等大小的小方块,而上图中的却是一个个等间隔的小黑点。因为信号不同所以冲击信号也不同。),打乱顺序,然后再重建(完美重建)。所以说在打乱之前的位置就是上图中原始信号中那一个个小黑点的位置,而原始信号中黑点的大小/高度,就是拼图游戏中的不同方块上的图像纹理。现在知道这种分解方法多么有用了吧。会不会有种错觉,感觉的他比傅里叶变换还有用?发挥你的想象力吧!其实很多东西都是越简单越好,因为它足够单纯。所谓大道至简说的就是这个道理。
2, 阶跃分解(Step Decomposition)
用一个个类似台阶一样的信号去分解信号叫阶跃分解法。这种方法已经有点傅里叶分析的那个意思了。
每一个子信号都是一个阶跃信号,即,第一个点的值为零,而接下来一串的点的值都是某个常数。和脉冲分解不同的是,脉冲分解每次得到的是信号某个点的值,而阶跃分解是用两个邻近点的差值来表达信号的。
3,奇偶分解(Even/Odd Decomposition)
奇偶分解,就是把一个N个单位长度的信号,分解成一份N长度的“奇对称”信号和N长度的“偶对称”信号(把长度为N的信号变成长度为2N的信号)。一个N点的信号,如果在N/2点两侧的图像具有镜像对称的特点(关于Y轴对称),我们就说这个信号具有偶对称性,如下图中的信号Xe[n]。同理,如果一个N点的信号,在N/2点两侧的图像具有中心对称的特点(关于N/2点中心对称),则这个信号是奇对称的。
这种分解方式进一步揭示了傅里叶变换的一个重要特性叫循环对称。也就是说我们假设任意一个信号都是头尾相连的。比如说一个N个单位长度的信号,N+1处是无定义的,但是我们假设他是x(0). 就好像一个贪吃蛇咬住了自己的尾巴。在傅里叶变换中,也是会假设任何信号都是无限循环的或者说是周期的。换句话说,也就是只有在这个假设存在的前提下,才能对信号进行傅里叶变换。
分解公式:
这是我用Matlab仿真的离散随机信号和它的奇偶分解。
这是连续随机信号的奇偶分解。
4,交叉分解(Interlaced Decomposition)
交叉分解很容易和奇偶分解混淆在一起。交错分解把信号分解为两部分信号,也是把一个长度为N的信号,分解成一个长度为2N的信号:一个偶数采样点信号和一个奇数采样点信号。将原始信号的所有奇数样点的信号都设置为0,即可得到偶数采样点信号。同理,将原始信号的所有偶数样点的信号都设置为0,即可得到奇数采样点信号。就是这么简单!
同样,我也用Matlab仿真了一下任意信号的交叉分解法。
交叉分解法很少被人提到,也很少用到,但他却是快速傅里叶变换FFT的基石。曾几何时,傅里叶变换的计算速度一直是个老大难,一些比较大的数据即便是今天的计算器来直接计算其傅里叶变换也要几分钟或者几个小时直到FFT的出现才极大的提高了傅里叶变换的计算速度。FFT的核心思想:通过对交错分解的重复利用,直到把信号分解到不能再分解的地步(这种方法又叫:按时抽取,倒序重排)。分别对最后分解出来的分量进行傅里叶变换,然后再把变换后的结果重新合成最终结果。这种方法把傅里叶变换的计算速度提高了成百上千倍。
5,傅里叶分解
任何一个N点信号都可以被分解为N+2个信号:一半是不同频率的正弦波,一半是不同频率的余弦波。
傅里叶分解很重要,其原因有三:
1,很多信号都能通过叠加正弦曲线的方式合成。
2,线性时不变系统有很好的保真度,若输入的是正弦信号,则输出也是正弦信号。
3,傅里叶分解的用途广泛,也是拉普拉斯变换和Z变换的基础。
(全文完)
谢谢收看!
鳴謝:
【1】Steven W. Smith-The Scientist and Engineer's Guide to Digital Signal Processing-California technical Publishing (1999);
【2】Matlab 2017b.
《圣经》箴言30章7-8节 ------- 我求你两件事,在我未死之先,不要不赐给我:求你使虚假和谎言远离我;使我也不贫穷也不富足,赐给我需用的饮食。
*配图与本文无关*