nice_cc 发表于 2014-4-16 20:23

Hilbert谱和边际谱

请问有哪位朋友用MATLAB文件交换中心由Alan Tan开发的plot_hht程序包画出了Hilbert谱和边际谱,求指导啊

chybeyond 发表于 2014-4-28 11:35









振动非终结者 发表于 2014-5-2 15:44

chybeyond 发表于 2014-4-28 11:35


请问一下,运行显示未定义“x”怎么回事?

chybeyond 发表于 2014-5-2 15:52

振动非终结者 发表于 2014-5-2 15:44
请问一下,运行显示未定义“x”怎么回事?

把你程序贴出来看下

振动非终结者 发表于 2014-5-2 20:38

chybeyond 发表于 2014-5-2 15:52
把你程序贴出来看下

function imf = emd(x)
% Empiricial Mode Decomposition (Hilbert-Huang Transform)
% imf = emd(x)
% Func : findpeaks

x   = transpose(x(:));
imf = [];
while ~ismonotonic(x)
   x1 = x;
   sd = Inf;
   while (sd > 0.1) | ~isimf(x1)
      s1 = getspline(x1);
      s2 = -getspline(-x1);
      x2 = x1-(s1+s2)/2;

      sd = sum((x1-x2).^2)/sum(x1.^2);
      x1 = x2;
   end

   imf{end+1} = x1;
   x          = x-x1;
end
imf{end+1} = x;

% FUNCTIONS

function u = ismonotonic(x)

u1 = length(findpeaks(x))*length(findpeaks(-x));
if u1 > 0, u = 0;
else,      u = 1; end

function u = isimf(x)

N= length(x);
u1 = sum(x(1:N-1).*x(2:N) < 0);
u2 = length(findpeaks(x))+length(findpeaks(-x));
if abs(u1-u2) > 1, u = 0;
else,            u = 1; end

function s = getspline(x)

N = length(x);
p = findpeaks(x);
s = spline(,,1:N);
就是从您上传的文件中解压出来的。我是新学的matlab,还不怎么会用。

chybeyond 发表于 2014-5-3 08:56

振动非终结者 发表于 2014-5-2 20:38
function imf = emd(x)
% Empiricial Mode Decomposition (Hilbert-Huang Transform)
% imf = emd(x)


x是你待分解的信号,使用前你需要定义或者导入信号x

振动非终结者 发表于 2014-5-4 11:09

chybeyond 发表于 2014-5-3 08:56
x是你待分解的信号,使用前你需要定义或者导入信号x

我还是不太懂。能不能麻烦您给举个稍微简单点的例子。比如分解如下的信号:
x(t)=2*sin(2*pi*t)+3*sin(6*pi*t)+5*sin(10*pi*t)
我试着加了进去,不过又出现了新的问题。

chybeyond 发表于 2014-5-4 11:16

本帖最后由 chybeyond 于 2014-5-4 11:21 编辑

振动非终结者 发表于 2014-5-4 11:09
我还是不太懂。能不能麻烦您给举个稍微简单点的例子。比如分解如下的信号:
x(t)=2*sin(2*pi*t)+3*sin(6 ...
什么问题,plot_hht程序里边有例子,你运行 = wavread('Hum.wav');plot_hht(x(1:6000),1/Fs);

woshixixigutou 发表于 2014-5-9 09:51

求高手指点 运行时出现下面的警告 是什么问题?
??? Maximum recursion limit of 500 reached. Use set(0,'RecursionLimit',N)
to change the limit.Be aware that exceeding your available stack space can
crash MATLAB and/or your computer.

Error in ==> fileparts

woshixixigutou 发表于 2014-5-9 09:54

将递归次数修改为1000次set(0,'RecursionLimit',1000) 之后还是继续提示同样的警告 是要改到比1000还要大?

woshixixigutou 发表于 2014-5-9 10:00

改成7000,MATLAB直接崩溃掉了{:{19}:}求有遇到同样问题的大神帮忙解决下~~~

猫头鹰先生 发表于 2014-5-9 12:36

请大家注意编写Hilbert谱程序的时候,注意instfreq函数的调用。

ck313 发表于 2014-5-19 10:17

为什么用边际谱画出来的幅值和仿真信号的对不上

bzp小鹏 发表于 2014-6-6 09:46

提供的文件,很有帮助,谢谢

天道酬勤0517 发表于 2015-3-26 22:02

我正在做的本科毕业论文就是基于Hilbert谱图的滚动轴承故障诊断
页: [1]
查看完整版本: Hilbert谱和边际谱