为什么Matlab给我一个未初始化的变量?

问题描述:

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

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 

的问题可能来自于 “:” 在时代(:A(1,J),1),但我不知道如何解决这个问题..

你可以用”将:作为参数传递给函数。 A colon仅作为变量的索引有效,因此MATLAB假定epoch应该是一个变量。但是,您无法从尚未初始化的变量中提取数据,因此会出现错误。

您的函数epoch需要一个索引(或索引范围)作为第一个参数。所以你必须提供一个标量索引或者你想要它返回的数据索引向量。如果你希望它返回所有的数据(即用于所有可能指数),但你不知道数据有多大,当你调用epoch,那么你可以通过一个冒号作为参数,像这样:

ini=epoch(':',A(1,j),1); 
fin=epoch(':',A(1,j),2); 
+0

这是我的功能划时代 功能划时代=无(epochn,汽车,inifin) 负载data.mat 种族= data.cit;对于j = 1:race.total_players 对于i = 1:max(race.epoch_based_on_hyy(:,j)) tempindex = find(i == race.epoch_based_on_hyy(:,j)); epoch_intv(i,j,1)= tempindex(1); epoch_intv(i,j,2)= tempindex(end); end end epoch = epoch_intv(epochn,car,inifin); 结束 输入参数应该是一个数1,2,3 ... – 2012-04-12 20:21:13

+0

谢谢它的工作,我 也发现了其他的方式,在我的功能,而不必 划时代= epoch_intv的(epochn,汽车,inifin)我现在有epoch_intv(:,car,inifin),现在是一个2变量函数! – 2012-04-12 20:37:34