⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mvtd.m

📁 这是改进的经验模式分解方法
💻 M
字号:
function m = mvtd(s,inds,MODE_COMPLEX)
% 用中值定理法求极值处的局部均值(MVTD)
% e(te) = 1/(t(i+1)-t(i)+1)*sum(s(t(l)) l=i..i+1
% s(t(l))--信号 t(i),t(i+1) 两个极值点的时刻
% te= (t(i)+t(i+1))/2
% m(t(i+1)) = h(t(i))*e(te)+h(t(i+1))*e(te+1)
% h(t(i)) = (t(i+2))-t(i+1))/(t(i+2)-t(i))
% h(t(i+1)) = (t(i+1)-t(i))/(t(i+2)-t(i))

if size(s,1) > 1
  s = s.';     % 向量需为[1,n]维
end;

if size(inds,1) > 1
  ins = ins';  % 向量需为[1,n]维
end

len = length(inds);
e = zeros(1,len);  % [1,n]

if MODE_COMPLEX		% 复信号情况
  switch MODE_COMPLEX
    case 1,2
    m = s;
  end;
else                % 实信号情况
   for i = 1:len-1
      t = floor((inds(i)+inds(i+1))/2);%% te= (t(i)+t(i+1))/2 {floor不超过x 的最大整数.(高斯取整) floor( [3.12 -3.12])ans = 3    -4 }
      e(t) = 1/(inds(i+1)-inds(i)+1)*(s(i)+s(i+1));% e(te) = 1/(t(i+1)-t(i)+1)*sum(s(t(l)) l=i..i+1
   end;
   for i = 1:len-2
      t = floor((inds(i)+inds(i+1))/2);
      h1(inds(i)) = (inds(i+2)-inds(i+1))/(inds(i+2)-inds(i));
      h2(inds(i)) = (inds(i+1)-inds(i))/(inds(i+2)-inds(i));
      m(inds(i+1)) = h1(i)*e(t)+h2(i)*e(t+1);
   end
end;



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -