用希尔伯特黄变换(hht)求时频谱和边际谱.docx

用希尔伯特黄变换(hht)求时频谱和边际谱.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
【原创】用希尔伯特黄变换(HHT求时频谱和边际 寒假将至,精心将自己最近做的东西总结了一下,能跟大家分享讨论是我的荣幸 源代码也贴出来了,希望大家能提出宝贵意见 ~顺祝大家寒假快乐,新年快乐 1.什么是HHT HHT就是先将信号进行经验模态分解(EMD分解),然后将分解后的每个IMF分 量进行Hilbert变换,得到信号的时频属性的一种时频分析方法。 2.EMD分解的步骤。 EMD分解 (1) (2) 找岀信号中所有局部极大值井用二次样条函数连接成上包络; 同理,利用三次样案插值函数连接所有局部极小值构成下包络; 求出丄、下包络的平均值记为阴*井求原始信号与包络均値的差蓿 x(z) 一叭=h、 如果湃足IMF的条件,那么爵就是求得的第一个IMF分量; 否则将阴作为原始信号进行(1) - (2)的步骤,直到第k次迭代后差值砲 成为一个IMF,记为: (3) Matlabi£ 坛 iLov^Matlab.Li] 上面k步迭代的终止准则是使得: 工 1^1,*-1(0- 12 SD = ~y z is ⑴ r :-0 位于0.2-0.3之间; (4)从原信号中减去ana得到第一阶剩余信号胭 5(/)-q(Z) = /;(/) (5)将剩余信号胸作为原信号进行(1) z (4)过程: Matlab论直 iLoveMatlab.cn 5-1 ⑴一讥)=M) 终止准则是当笫N阶剩余信号陽皿足够.以致不能再提取IMF。 综上,原始信号凰啲分解为: N s(,) =》q(/) + M) 77=1 Matlab论坛 iLoveMatlab.cn EMD分解的流程图如下: 3.实例演示 给定频率分别为10Hz和35Hz的两个正弦信号相叠加的复合信号,采样频率 fs=2048Hz 的信号,表达式如下:y=5sin(2*pi*10t)+5*sin(2*pi*35t) 为了对比,先用fft对求上述信号的幅频和相频曲线。 复制内容到剪贴板 代码: fun cti on fftfenxi clear;clc; N=2048; %fft默认计算的信号是从0开始的 t=li nspace(1,2,N);deta=t(2)-t(1);1/deta x=5*si n(2*pi*10*t)+5*si n( 2*pi*35*t); % N仁256;N2=512;w1=0.2*2*pi;w2=0.3*2*pi;w3=0.4*2*pi; % x=(t=-200t=-200+N1*deta).*si n(w1*t)+(t-200+N1*detat=-200+N2*det a).*si n(w2*t)+(t-200+N2*detat=200).*si n(w3*t); y = x; m=0:N-1; f=1./(N*deta)*m;% 可以查看课本就是这样定义横坐标频率范围的 济面计算的丫就是x(t)的傅里叶变换数值 %Y=exp(i*4*pi*f).*fft(y)% 将计算出来的频谱乘以exp(i*4*pi*f) 得到频移后 [-2,2]之间的频谱值 Y=fft(y); z=sqrt(Y.*conj(Y)); plot(f(1:100),z(1:100)); title( 幅频曲线) xia ngwei=a ngle(Y); figure(2) plot(f,xia ngwei) title( 相频曲线) figure(3) plot(t,y,r) %axis([-2,2,0,1.2]) title( 原始信号) H站惜号 6D0D4CQ _AL iW 20i | .qwM atlib. c:n用且由样; 6D0D 4CQ _ AL i W 20 i | .qwM atlib. c:n 用且由样; 用Hilbert变换直接求该信号的瞬时频率 复制内容到剪贴板 代码: clear;clc;clf; %假设待分析的函数是z=tA3 N=2048; %fft默认计算的信号是从0开始的 t=li nspace(1,2,N);deta=t(2)-t(1);fs=1/deta; x=5*si n(2*pi*10*t)+5*si n( 2*pi*35*t); z=x; hx=hilbert(z); xr=real(hx);xi=imag(hx); %计算瞬时振幅 sz=sqrt(xr.A2+xi.A2); %计算瞬时相位 sx=a ngle(hx); %计算瞬时频率 dt=diff(t); dx=diff(sx); sp=dx./dt; plot(t(1:N-1),sp) title( 瞬时频率) 小结:傅里叶变换不能得到瞬时频率,即不能得到某个时刻的频率值。 Hilbert 变换是求取瞬时频率的方法,但如果只用Hilbert变换求出来的瞬时频率也不准 确。(出现负频,实际上负频没

文档评论(0)

136****3783 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档