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