我有一个循环,我想在其中创建一个对象。它必须为每个循环共享相同的名称。像
for i=1:100
car=car(args(i))
%in this loop do stuff with car
end
问题是在第二次迭代时,matlab尝试访问元素car(args(i)),而不是调用类car的costructor。
这是arg = SS
的错误Error using subsindex
Function 'subsindex' is not defined for values of class 'SS'.
在java中,我只需要调用''new''参数,比如
car=new car(args);
//do stuff with the car istance
car= new car(args);
//do stuff with the new car istance
我无法分配''car''数组,因为每个数据都是几百兆字节。我尝试在matlab中寻找类似于new的关键字,但我没有运气。
答案 0 :(得分:6)
问题在于,您调用的变量与您的类名称相同。第一次定义car=car();
时,car
开始引用一个实例,而不是类,后来对car()
的调用将不会调用类构造函数,但会尝试访问您的对象的索引car
(就好像它是一个数组,因此错误为subsindex
)。
你总是要小心MATLAB 而不是来遮蔽内置函数名,或者在这种情况下是类名。在Java中,使用方括号访问数组(我猜?),所以没有歧义。
因此,请勿使用car
作为类car
实例的名称。改为称呼mycar=car(args(i))
。
答案 1 :(得分:1)
尝试在每次迭代结束时从工作空间中删除汽车实例:
clear car