xurenlin 发表于 2007-3-11 18:46

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

我是一名学生,最近才接触到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;
= emd(x);
emd_visu(x,t,imf,1);
可一运行就出现这样的错误:??? Undefined function or variable 'emd'. 说这个函数没有定义
请问各位老师这是怎么回事呢

eight 发表于 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文件用法

xurenlin 发表于 2007-3-11 19:13

哦 谢谢!

zhangnan3509 发表于 2007-3-12 08:38

我运行了一下 应该是没有问题。楼主不用担心

xurenlin 发表于 2007-3-12 12:03

谢谢! 我也会弄了
呵呵

liliang 发表于 2007-4-23 20:28

可是怎么会出现这个错误呢?
??? Undefined function or variable 'isvector'.
这个文件程序压缩包里是不是没有啊?

form 发表于 2007-4-23 21:09

回复 #6 liliang 的帖子

你的matlab版本低了,换7.0的

babydonnali 发表于 2007-4-24 19:15

回复 #1 xurenlin 的帖子

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

s_liyanzhi@stu.edu.cn

谢谢啊!

zhangnan3509 发表于 2007-4-24 21:32

回复 #8 babydonnali 的帖子

function = extr(x,t);

% = 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();
    debz = find(dz == 1);
    finz = find(dz == -1)-1;
    indz = round((debz+finz)/2);
else
    indz = iz;
end
indzer = sort();
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();
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 = ;
      end
      else
      if d(fins(k)) > 0
          imin = ;
      end
      end
    end
end

if length(imax) > 0
    indmax = sort();
end

if length(imin) > 0
    indmin = sort();
end

end

zhangnan3509 发表于 2007-4-24 21:34

回复 #8 babydonnali 的帖子

请以后学会使用搜索,本版里面多次说到了这些问题
页: [1]
查看完整版本: 求助:EMD.m程序运行问题