基本上我想做的是定义一个空向量,然后用for循环中的一些对象填充它,例如
status = [];
while(sweepLine.y > 0)
for i = 1 : m
isSweeped = IsBeingSweeped(Sections(i), sweepLine);
if(isSweeped == 1)
status(i) = Sections(i);
end
sweepLine.y = sweepLine.y - 1;
end
但是,matlab只是告诉我这样的错误,例如,从Section转换为Double时发生以下错误:无法使用Double从Section转换为Double的错误。
tryGOX(第41行)status(i)= Sections(i)中的错误;
如果我想用Java做同样的事情,可能我会写
Section[] status = new Section[10];
while(sweepLine.y > 0){
for(int i = 0; i < 10; i ++){
isSweeped = IsBeingSweeped(Sections[i], sweepLine);
if(isSweeped == 1)
status[i] = Sections[i];
}
sweepLine.y = sweepLine.y - 1;
}
如何在Matlab中做到这一点?
谢谢
有很多缺乏信息。一些猜测:
status
是一个功能。不要将其用作变量。更改其名称,然后尝试继续解决错误。
您说Sections
包含对象。您不能将对象存储在双精度数组中。请改用单元格数组:
sectionStatus{i} = Sections(i);
甚至更好:
sectionStatus{ii} = Sections(ii);
就像i
虚构单元一样,当您覆盖它时可能会引起麻烦。(尽管在Matlab的较新版本中没有太多麻烦,如果有的话)。
更复杂的方法是使用 结构
getobjname = @(x) inputname(1);
sectionStatus = struct;
while(sweepLine.y > 0)
for ii = 1 : m
isSweeped = IsBeingSweeped(Sections(ii), sweepLine);
if(isSweeped == 1)
sectionStatus.( getobjname(Sections(ii)) ) = Sections(ii);
end
sweepLine.y = sweepLine.y - 1;
end
end
这将通过类实例的名称为您提供包含所有节的结构。我猜想,实际上是变量Sections
构建的方式。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句