A. 基于matlab的Hilbert变换详解
作为学习HHT的的第二部分,第一部分emd分解可参见链接:
用matlab进行振动波形的emd分解
希尔伯特变换的物理意义十分简单: 把信号的所有频率分量的相位推迟90度。 因此又叫90°移相器,所以原始信号与它的希尔伯特变换构成正交副。
当然,我知道大家最感兴趣的是:把相位推迟90度有什么用?
答案是: 希尔伯特变换可以用来做解调器,调幅、调频都能解。
我们构造一个信号 z(t)=x(t)+i*y(t),将该图像在三维空间中画出来,如图所示
补充:为什么通过瞬时相位求导可以定义为瞬时频率:从信号投影来看可以建立时间t和一个角度的极坐标方程,所以单位时间角度的变化就是角速度,而角速度与频率成倒数。
这样,我们就利用希尔伯特变换从一个幅度、频率均被调制的调制波中把幅度、频率都解调了出来。
3瞬属性中的瞬时频率,很明显可以看出它有很多的" 负频率 "!这很明显是错误的。
所以,直接根据" 解析信号 "算瞬时频率是无意义的!
所以,真正做 3瞬属性 的分析,做原信号的" 时频谱 "分析,我们用的是:
—— 希尔伯特-黄变换(HHT)。HHT变换先将信号进行EMD分解,得到的是各个不同尺度的分量,对每一个分量进行Hilbert变换后得到的是有实际意义的瞬时频率。
举例如下:
希尔伯特-黄变换最初的理论是采用emd的经验模态分解,目前已经改进到采用ceemdan的模态分解方式
【1】https://www.hu.com/question/30372795 希尔伯特变换将信号表示为复解析信号的物理意义是什么?
【2】https://www.jianshu.com/p/b591d95ae80b 一维离散希尔伯特变换实现与3瞬属性
【3】https://www.jianshu.com/p/3363abb64f32 离散数据希尔伯特-黄变换
【4】https://blog.csdn.net/yrlgg/article/details/79595859 傅里叶变换与希尔伯特变换
B. 请问谁有希尔伯特黄变换MATLAB代码急求,谢谢
我有希尔伯特黄变换MATLAB代码,函数文件名emd.m
C. 我求得了imf作HHT后的瞬时频率跟你写的一样,但是仍然存在负值,
应该不超过1/2
的确有负的我重看了一下,Hilbert变换中的频率与傅里叶中频率意义不同,可能有负值
不过在它的函数工具箱里有处理
[A,f,t]=hhspectrum(imf);%对IMF分量求取瞬时频率与振幅:A:是每个IMF的振幅向量,f:每个IMF对应的瞬时频率,t:时间序列号
[E,t,Cenf]=toimage(A,f);%将每个IMF信号合成求取Hilbert谱,E:对应的振幅值,Cenf:每个网格对应的中心频率这里横轴为时间,纵轴为频率
%即时频图(用颜色表示第三维值的大小)和三维图(三维坐标系:时间,中心频率,振幅)
D. EMD HHT变换 在MATLAB中怎么弄啊
EMD-HHT变换的经典文献
以下为一般性带附件资料发贴选项:
【资料成文时间】:1998
【语言】:英语
【页数】:96
【何人(公司)所著】:E. Huang , Zheng Shen , Steven R. Long ,Proc. R. Soc. Lond. A (1998) 454, 903
【文件格式】:PDF
【文件原名】:The empirical mode decomposition and the Hilbert spectrum for nonlinear and
non-stationary time series analysis
你静心读完这篇文章一定有很大启发.
MATLAB应该足够了,我这么认为.
程序要自己写的,下的基本不合乎你的要求
E. vc++6.0中如何调用matlab
要在VC中成功编译Matlab引擎程序,必须包含引擎头文件engine.h并引入Matlab对应的库文件libmx.lib、libmat.lib、libeng.lib。具体的说,打开一个工程后,做如下设置(以VC6为例):
1) 通过菜单工程/选项,打开设置属性页,进入Directories页面,在目录下拉列表框中选择Include files,添加路径:"C:\matlab\extern\include"(假定matlab安装在C:\matlab目录)。
2) 选择Library files,添加路径:C:\matlab\extern\lib\win32\microsoft\msvc60。
3) 通过菜单工程/设置,打开工程设置属性页,进入Link页面,在Object/library moles编辑框中,添加文件名libmx.lib libmat.lib libeng.lib。
以上步骤1)、2)只需设置一次,而步骤3)对每个工程都要单独设定。
F. matlab进行HHT分析时,找不到原因,请求大神帮助
instfreq这是一个函数,你把这个函数放在和hhspectrum 同一目录下了么??
G. 在MATLAB中进行编程时function [A,f,tt] = hhspectrum(x,t,l,aff)是什么意思
同其他的编程语言类似啊,hhspectrum是一个自定义的函数,x,t,l,aff是输入变量,A,f,tt是输出变量
至于自定义函数的作用,取决于代码怎么写的,根据你的意思那就是实现电流信号HHT变换呀
H. 信号去噪方法有那些
哪种信号啊?信号分老多种啦!
我对雷达较有研究给你我的论文看一下吧
常常借鉴地震资料处理的反褶积方法,将雷达记录转变为反射系数序列。然而由于地下介质的复杂性和各种噪声的影响,常常反褶积对杂波与信号的分离并无改善;所以很多情况下应用效果并不理想。鉴于利用常规的探地雷达数据处理方法进行目标体资料分析,易受杂波干扰、波形混叠等等因素影响而导致应用解释效果欠佳,因此对于探地雷达的数据处理方法仍有待于进一步深入研究。
在图像和信号处理论域广泛应用的小波变换,以及基于HHT变换的EMD分解等时频分析方法,近年来在探地雷达数据处理中得到了重视。小波变换具有线性变换、多分辨率分析、局部细化、可灵活选择小波基等等优点,对瞬态非平稳信号或宽带信号分析具有独特之处,使得它非常适合于探地雷达脉冲信号的处理。而希尔伯特(换是提取信号瞬时参数的有效途径,但它对信号的提取有条件要求;基于HHT变换的经验模态分解,依据数据本身的信息进行分解,得到的固有模态函数信号是有限个且均满足Hilbert变换对信号的提取条件,较之基于传统的傅立叶变换的时频分析方法,具有真正有意义的瞬时参数分析。
由于应用探地雷达的瞬时参数分析可以形成三个参数相互独立的解释剖面,从而比较全面的了解地下介质变化情况。但是瞬时参数易受噪声影响,尤其是瞬时相位对噪声干扰比较敏感。而城市环境中探地雷达探测信号干扰较多,同时由于工作条件的复杂多样,有时直达波强度常常可与探测目标回波强度相比拟。由于直达波的消除不易,使得对目标的特征识别、解释以及空间定位比较困难。在进行处理时,杂波的移除是非常重要的部分。为此首先进行常规处理,主要是消除直达波强烈影响。简单的做法是从实测的探地雷达记录中直接消减直达波记录;或者通过选择合理的滤波参数,采用移动平均滤波器或中值滤波器消减直达波;
在此基础上,采用小波变换方法对探地雷达数据进行降噪分析处理。从效果上讲,以Donoho的阀值去噪方法最为突出。这里利用Mallat提出的多分辨率分析的概念和正交小波快速算法(Mallat算法),假定噪声信号广泛分布在各个尺度且幅值相对较小,通过正交变换,将信号能量集中在某些频带的少数幅值相对较大系数上。为了数据处理方便,借助Matlab提供的方便而强大的计算及可视化工具,利用Matlab的小波工具箱函数,只须应用简单的信号处理知识和编程技能,就可以通过Matlab编程进行小波阀值估计,给予其它频带上的小波系数较小的权重或者置零,从而达到有效抑制噪声的目的。总的来说,应用小波变换处理可以有效地消除各种噪声干扰,从而更清楚有效地显示目标层位。
通过上述数据处理过程,避免了在噪声干扰情况下直接进行经验模态分解较难获得良好的分解效果的问题。由于希尔伯特-黄(HHT)变换具有一定的噪声分解能力,不同尺度的噪声被分离到不同的固有模态函数,使得噪声对信号的影响减小,从而信号特征的提取的有效性和信号分解的精度都有了提高。通过对经验模态分解得到的IMF信号进行变换,获得瞬时频率、瞬时相位、瞬时振幅等瞬时参数,其中瞬时频率可以较好的探测地下介质的形状和性质的变化;瞬时相位可有效的探测地下介质的连续性并且与信号振幅无关,可以更好的分析深层信号特征;瞬时振幅反映了信号能量的变化,可以推测地下介质性质的变化。
综上所述,根据探地雷达信号的特点,通过试验和研究,首先去除直达波等干扰,并利用小波变换具有良好的时频分析特性进行信号去噪,再利用希尔伯特-黄(HHT)变换得到瞬时频率、瞬时相位、瞬时振幅等瞬时参数,形成多个参数剖面,可以多角度多方面的分析探地雷达剖面并易于给出合理的地质解释。因此,在探地雷达信号去噪基础上,基于EMD分解的瞬时参数分析在探地雷达数据处理中具有很好的应用前景。
I. 为什么hht不能成功导入到matlab
现拷贝到matlab路径下的工具箱中,然后利用路径设置加载到工具箱中,就可以直接利用了!