声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2422|回复: 9

[HHT] 求助:EMD.m程序运行问题

[复制链接]
发表于 2007-3-11 18:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
我是一名学生,最近才接触到EMD
我在网上下了个EMD.m程序  我就直接在主程序前面加了这段程序:N = 2000;% # of data samples
t = linspace(0,1,N);
x1 =sin(2*pi*15*t);
x2 =sin(2*pi*10*t);
x3 =sin(2*pi*5*t);
x = x1+x2+x3;
[imf,ort,nbits] = emd(x);
emd_visu(x,t,imf,1);
可一运行就出现这样的错误:??? Undefined function or variable 'emd'. 说这个函数没有定义
请问各位老师  这是怎么回事呢
回复
分享到:

使用道具 举报

发表于 2007-3-11 19:04 | 显示全部楼层
原帖由 xurenlin 于 2007-3-11 18:46 发表
我是一名学生,最近才接触到EMD
我在网上下了个EMD.m程序  我就直接在主程序前面加了这段程序:N = 2000;% # of data samples
t = linspace(0,1,N);
x1 =sin(2*pi*15*t);
x2 =sin(2*pi*10*t);
x3 =sin(2*pi ...



这与emd无关,路径问题,建议阅读最基本的matlab m文件用法
 楼主| 发表于 2007-3-11 19:13 | 显示全部楼层
哦 谢谢!
发表于 2007-3-12 08:38 | 显示全部楼层
我运行了一下 应该是没有问题。楼主不用担心
 楼主| 发表于 2007-3-12 12:03 | 显示全部楼层
谢谢! 我也会弄了
呵呵
发表于 2007-4-23 20:28 | 显示全部楼层
可是怎么会出现这个错误呢?
??? Undefined function or variable 'isvector'.
这个文件程序压缩包里是不是没有啊?
发表于 2007-4-23 21:09 | 显示全部楼层

回复 #6 liliang 的帖子

你的matlab版本低了,换7.0的
发表于 2007-4-24 19:15 | 显示全部楼层

回复 #1 xurenlin 的帖子

我下载了一个,运行的时候提示没有EXTR函数,你能不能把你下载的EMD文件传给我啊?

s_liyanzhi@stu.edu.cn

谢谢啊!
发表于 2007-4-24 21:32 | 显示全部楼层

回复 #8 babydonnali 的帖子

function [indmin, indmax, indzer] = extr(x,t);

% [indmin, indmax, indzer] = EXTR(x,t) finds extrema and zero-crossings
%
% inputs : - x : analyzed signal
%          - t (optional) : sampling times, default 1:length(x)
%
% outputs : - indmin = indices of minima
%           - indmax = indices of maxima
%           - indzer = indices of zero-crossings

if(nargin==1)
  t=1:length(x);
end

m = length(x);
x1=x(1:m-1);
x2=x(2:m);
indzer = find(x1.*x2<0);

if any(x == 0)
  iz = find( x==0 );
  indz = [];
  if any(diff(iz)==1)
    zer = x == 0;
    dz = diff([0 zer 0]);
    debz = find(dz == 1);
    finz = find(dz == -1)-1;
    indz = round((debz+finz)/2);
  else
    indz = iz;
  end
  indzer = sort([indzer indz]);
end
  
d = diff(x);

n = length(d);
d1 = d(1:n-1);
d2 = d(2:n);
indmin = find(d1.*d2<0 & d1<0)+1;
indmax = find(d1.*d2<0 & d1>0)+1;

if any(d==0)
  
  imax = [];
  imin = [];
  
  bad = (d==0);
  dd = diff([0 bad 0]);
  debs = find(dd == 1);
  fins = find(dd == -1);
  if debs(1) == 1
    if length(debs) > 1
      debs = debs(2:end);
      fins = fins(2:end);
    else
      debs = [];
      fins = [];
    end
  end
  if length(debs) > 0
    if fins(end) == m
      if length(debs) > 1
        debs = debs(1:(end-1));
        fins = fins(1:(end-1));

      else
        debs = [];
        fins = [];
      end      
    end
  end
  lc = length(debs);
  if lc > 0
    for k = 1:lc
      if d(debs(k)-1) > 0
        if d(fins(k)) < 0
          imax = [imax round((fins(k)+debs(k))/2)];
        end
      else
        if d(fins(k)) > 0
          imin = [imin round((fins(k)+debs(k))/2)];
        end
      end
    end
  end
  
  if length(imax) > 0
    indmax = sort([indmax imax]);
  end

  if length(imin) > 0
    indmin = sort([indmin imin]);
  end
  
end
发表于 2007-4-24 21:34 | 显示全部楼层

回复 #8 babydonnali 的帖子

请以后学会使用搜索,本版里面多次说到了这些问题
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-17 18:27 , Processed in 0.068166 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表