本文目录一览:
一维离散希尔伯特变换实现与3瞬属性
希尔伯特变换的意义本文不提,本文的目标是举例说明到底离散傅里叶变换是如何实现的,并编写程序与matlab自带的hilbert函数结果对比,验证我们的实现过程是否正确。
原始信号为 ,其离散希尔伯特变换的定义公式为:
说明:先让原始信号与 信号做卷积,然后一起合并成一个 复数 信号 。
问题:看上去很简单,但这里的卷积不是一般意义上的卷积的操作!
所以:实际中得到 的方法是通过借助 离散傅里叶变换DFT 来实现的!
因此:本文就用 离散傅里叶变换 来实现 离散希尔伯特变换 。
设原始信号为 ,总长度一般 (下标n是从 1 开始到N),总体实现步骤可分为3步:
相应的matlab程序:
结果:
手动实现正确!
希尔伯特变换的结果是给原始信号 提供了一个幅值、频率不变,但相位平移90°的信号 。
所以,希尔伯特变换是从"时域"到"时域"的变换!只改变了相位,所以又叫90°移相滤波器;
所以,原始信号 与它的希尔伯特变换 构成正交副。
现在,我们换回到最初的记法:原始信号和它对应的希尔伯特变换信号分别用 和 表示,那么对应的" 解析信号 "就可以用这两个东西组成:
对于这个解析信号,我们可以得它的3瞬属性:瞬仔拿时振幅、瞬时相位、瞬时频率。
可以看出,3瞬属性是相互关联的!
瞬时振幅、瞬时相位可以直接求,有意义;
但是瞬时频率 直接 根据解析信号这么按公闭乎式 求 ,是 没有物理意义 的!
并且 离散信号 ,它的瞬时频率求导只能按照" 差分 "来近似,即:
给出matlab的实现程序:
效果:
3瞬属性中的瞬时频率,很明显可以看出它有很多的" 负频率 "!这很明显是错误的。
所以,直接根据" 解析信号 "算瞬时频率是无意义的!
所以,真正做 3瞬属性 的分析,做原信号的" 时轿戚悉频谱 "分析,我们用的:
—— 希尔伯特-黄变换。
希尔伯特变换的简介
希尔伯特变换(hilbert transform) 一个连续时间信号x(t)的希尔伯特变换等于该信号通过具有冲激响应h(t)=1/πt的线性系统以后的输出响应xh(t)。由于h(t)的傅里叶变换为如图1.
所以信号经希尔伯特变换后,在频域滚埋喊各频率分量的幅度保持不变,但相位将出现90°相移。即对正频率滞后π/2,对负频率导前π/2,因此希尔伯特变换器又称为90°移相器。图中所示就是在通信系统中利用直接相移法产生单边带信号的方块图。图中x(t)表示输入信号,相移是通过希尔伯特变换器来实现的。用希尔伯特变换描述幅度调制或相位调制的包络、瞬时频率和瞬时相位会使分析简便,在通信系统中有着重要的理论意义和实用价值。在通信理液指论中,希尔伯特变换是分析信号的工具,在数字信号处理中,不仅可用于信号变换,还可用于滤波,可以做成不同类型的希尔伯特滤波器。
在数学与信号处理的领域中,一个实值函大野数的希尔伯特变换(Hilbert transform)——在此标示为H——是将信号s(t)与1/(πt)做卷积,以得到s'(t)。因此,希尔伯特变换结果s'(t)可以被解读为输入是s(t)的线性时不变系统(linear time invariant system)的输出,而此系统的脉冲响应为1/(πt)。这是一项有用的数学,用在描述一个以实数值载波做调制的信号之复数包络(complex envelope),出现在通讯理论中发挥着重要作用。
理论证明,一个物理可实现的系统,由于因果性的制约(h(t)=O,t0)其系统函数的实部Hr(Ω)与虚部hi(Ω)互为一对希尔伯特变换,或者说存在着希尔伯特变换的关系如图3
式中H(Ω)是h(t)的傅里叶变换,Ω表示角频率,所以,已知Hi(Ω),则Hr(Ω)就唯一地被确定,反之也一样。因此,如果给定系统函数的实部(虚部),就不能任意确定虚部(实部),否则就不能保证是因果系统。同理,一个稳定的最小相位系统,由于其对数幅度1og|H(Ω)|和对数相位arg〔H(Ω))〕之间互为希尔伯特变换,则该系统一定是因果系统。所以通常设计滤波器,当给定幅频特性后,则其相频特性就不能任意选择。否则,不能保证系统是稳定和因果的。理想的希尔伯特变换器是非因果系统,采用数字信号处理技术,将信号适当延迟,比较容易实现在一定频带范围内,频率特性是近似理想的。
希尔伯特变换定义如下:
其中
并考虑此积分为柯西主值(Cauchy principal value),其避免掉在τ=t以及τ=±∞等处的奇点。 希尔伯特变换之频率响应由傅立叶变换给出:
其中F是傅立叶变换,i(有时写作j)是虚数单位,ω是角频率,以及
常被称作signum函数。既然:
希尔伯特实际上是一个使相位滞后pi/2的全通移相网络。
我们也注意到:H^2(\omega) = -1。因此将上面方程式乘上,可得到:
从中,可以看出反(逆)希尔伯特变换
经验模态分解(EMD)原理及示意图
基础背景自行搜索
希尔伯特-黄变换包括两个步骤:
1.使用 EMD 算法获得本质模态函数 (IMF)。
2.通过对上一步获得的结果应用希尔伯特-黄变换得到初始序列的瞬时频率谱。HHT 能够获得非线性和非静态序列的清物郑瞬时频率谱。之后,可以使用经验模态分解处理这些序列。
本文重点讲解第一部分
从 EMD 生成的本质模态函数( IMF) 应满足以下要求:
1.IMF 极值的数量(最大值和最小值的数量答颂之和)与零穿越的数量必须相等或最多相差 1;
2.在 IMF 的任意点,局部最大值定义的包络线的平均值和局部最小值定义的包络线的平均值应等于零。
1.求极值点
2.拟合包络函数
用三次样条插值法拟合包络
3.均值包络线
将两条极值曲线平均获得平均包络线
4.获得中间信号
原始信号减均值包络线,得到中间信号。若中间信号中还存在负的局部极大值和正的局部极小值(此判据等效于是否满足上述经验模态分解条件),说明这还不是一个本征模函数IMF,需要继续进行“筛选”。筛选的过程就是以该中间信号为新的输入信号继续重复1~4的步骤。筛选过程通常在蚂凳残数只包含不超过两个极值时停止。
5.迭代
用上述方法得到第一个IMF后,用原始信号减IMF1,作为新的原始信号,再通过上述的1~4步骤,可以得到IMF2,以此类推,完成EMD分解。
6.分解完需要的IMF后,至此,EMD分解完成。
这篇文章能让你明白经验模态分解(EMD)——基础理论篇
经验模态分解法介绍
经验模态分解 (Empirical Mode Decomposition)
EMD算法PPT演示迭代过程
在matlab创建Hilbert矩阵的方法是什么?
在Matlab中可以直接使用hilb()函数得到指定的希尔矩阵。即产生每个矩阵元素的值都等于册态 1/(行索引+列索引-1)的矩阵。\x0d\x0a此外,产生特殊矩阵方面,matlab是很强大的工具,还包括一下一些函数能够产生特殊矩阵:\x0d\x0a(1) 魔方矩阵魔方矩阵有一个有趣的性质,其每行、每列及两条对角线上的元素和都相等。对于n阶魔方阵,其元素由1,2,3,?,n2共n2个整数组成。MATLAB提供了求魔方矩阵的函数magic(n),其功能是生成一个n阶魔方阵。\x0d\x0a(2) 范得蒙矩阵范得蒙(Vandermonde)矩阵最后一列全为1,倒数第二列为一个指定的向量,其他各列是其后列与倒数第二列的点乘积。可以用一个指定向量生成一个范得蒙矩阵。在MATLAB中,函数vander(V)生成以向量V为基础向量的范得蒙矩阵。\x0d\x0a(3) 希尔伯特矩阵在MATLAB中,生成希尔伯特矩阵的函数是hilb(n)。使用一般方法求逆会因为原始数据的微小扰动而产生不可靠的计算结果。MATLAB中,有一个专门求希尔伯特矩阵的逆的函数invhilb(n),其功能是求n阶的希尔伯特矩阵的逆矩阵。\x0d\x0a(4) 托普利兹矩阵托普利兹(Toeplitz)矩阵除第一行第一列外,其他每个元素都与左上角的元素相同。生成托普利兹矩阵的函数是toeplitz(x,y),它生成一个以x为第一列,y为第一行的托普利兹矩阵。这里x, y均为向量,两者不必等长。toeplitz(x)用向量x生成一困乎个对称的托普利兹矩阵。\x0d\x0a(5) 伴随矩阵 MATLAB生成伴随矩阵的函数是compan(p),其中p是一个多项式的系数向量,高次幂系数排在前,低次幂排在后。\x0d\x0a(6) 帕斯卡矩阵,二次项(x+y)n展开后的系数随n的增大组成一个三角形表,称为杨辉三角形。汪姿悉由杨辉三角形表组成的矩阵称为帕斯卡(Pascal)矩阵。函数pascal(n)生成一个n阶帕斯卡矩阵。