基本上我想要做的是定义一个空向量,然后在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)= Section(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中做到这一点?
谢谢
答案 0 :(得分:0)
有很多缺乏信息。一些猜测:
status
是一个功能。不要将它用作变量。更改其名称并尝试错误是否仍然存在。
您说Sections
包含对象。您不能将对象存储在双数组中。改为使用cell array:
sectionStatus{i} = Sections(i);
甚至更好:
sectionStatus{ii} = Sections(ii);
因为i
是虚构的单位,当你覆盖它时它可能会引起麻烦。 (虽然在较新版本的Matlab中没有那么多麻烦,如果有的话)。
更复杂的方法是使用 structs
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
的构建方式。
答案 1 :(得分:0)
如果您知道尺寸,可以预先分配。
status= zeros(size);
欢呼声
答案 2 :(得分:0)
理想情况下,如果你知道你可以做的尺寸:
status = zeros(N);
或:
status(N) = 0;
如果你不知道大小,那么在你的for循环中,你可以写:
status(end+1) = Sections(i);