1

在编译时,“epoch”被确定为一个变量并且这个变量是未初始化的。“epoch”也是一个函数名,以前版本的 MATLAB 会调用该函数。但是,MATLAB 7 禁止在相同的上下文中使用相同的名称作为函数和变量。

function slope1_4=s(x,m)
A=xlsread(x);
slope1_4=[];
%B=xlsread(y);
%nbligneA=size(A,1);
%nbcolonneA=size(A,2);
%nbligneB=size(B,1);
%nbcolonneB=size(B,2);
for j=m %nbcolonneA
    clear ini;
    clear fin;
    ini=epoch(:,A(1,j),1);
    fin=epoch(:,A(1,j),2);
    ini(ini==0)=[];
    fin(fin==0)=[];
    for i=1:size(ini,1)
        clear f;
        clear a;
        clear b;
        clear y;
        debut=ini(i);
        ending=fin(i);
        interval=ending-debut+1;
        a=A(debut+1:ending+1,j);
        for y=1:interval
            f(y)=a(y);
        end
        y=1:interval;
        b=polyfit(y,f,1);
        slope1_4=[slope1_4,b(1)];
    end
end

问题可能来自 epoch(:,A(1,j),1) 中的“:”,但我不知道如何解决这个问题..

4

1 回答 1

2

您不能:作为参数传递给函数。冒号仅作为变量的索引有效,因此 MATLAB 假定它epoch应该是一个变量。但是,您无法从尚未初始化的变量中提取数据,因此会出现错误。

您的函数epoch需要一个索引(或索引范围)作为第一个参数。因此,您必须为其提供一个标量索引或您希望它返回的数据索引向量。如果你希望它返回所有数据(即所有可能的索引),但你不知道调用时数据有多大epoch,那么你可以传递一个冒号字符串作为参数,如下所示:

ini=epoch(':',A(1,j),1);
fin=epoch(':',A(1,j),2);
于 2012-04-12T20:10:59.580 回答