Matlab 如何在向量中存储对象?
基本上我想做的是定义一个空向量,然后用for循环中的一些对象填充它,比如Matlab 如何在向量中存储对象?,matlab,Matlab,基本上我想做的是定义一个空向量,然后用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
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简单地告诉我错误如下:,
将节转换为双精度时发生以下错误:
使用double时出错
无法从节转换为双精度
tryGOX中的错误(第41行)
状态(i)=第(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;
}
Section[]状态=新节[10];
while(sweedline.y>0){
对于(int i=0;i<10;i++){
isSweeped=正在扫掠(截面[i],扫掠线);
如果(isSweeped==1)
状态[i]=节[i];
}
sweepLine.y=sweepLine.y-1;
}
如何在Matlab中实现这一点
谢谢有很多缺少的信息。一些猜测:
状态
是一个函数。不要将其用作变量。如果错误仍然存在,请更改其名称并重试
您说过部分包含对象。不能在双数组中存储对象。请改为使用:
或者更好:
sectionStatus{ii} = Sections(ii);
因为i
是虚构的单位,当您覆盖它时,它可能会导致问题。(虽然在较新版本的Matlab中没有那么多麻烦(如果有的话)
更复杂的方法是使用
这将为您提供一个包含所有节的结构,其中包含类实例的名称。我猜,这实际上就是变量节的构建方式。如果知道大小,可以预先分配
status= zeros(size);
干杯如果你知道你能做的尺寸,最好是:
status = zeros(N);
或:
如果您不知道大小,那么在for循环中,您可以编写:
status(end+1) = Sections(i);
您是否缺少if
语句的end
?
status = zeros(N);
status(N) = 0;
status(end+1) = Sections(i);