概述
看起来您正在尝试创建一个句柄对象(Shooters)数组,并将其存储在另一个句柄对象(Squardron)的属性中.我有一个非常
similar problem discussion可能会帮助你.
简而言之:你在做什么可能不是很漂亮 – 但可能已经很好了.
在Matlab中创建数组时,通常需要进行一些预分配以保留内存,从而显着提高性能.
在正常情况下,这样的事情:
a=zeros(1,1000);
for n=1:1000
a(n)=n;
end
(这里a = 1:1000;会更好)
对于对象,预分配通过将其中一个对象分配给数组中的最后一个字段来工作.然后Matlab通过调用没有参数的该对象的构造函数来填充其创建的对象(句柄)之前的其他字段(参见Matlab help).因此,对象的预分配可能如下所示:
a(1,1000)=ObjectConstructor();
for n=1:1000
a(n)=ObjectConstructor();
end
或者干脆
for n=1000:-1:1
a(n)=ObjectConstructor();
end
确保可以在没有参数的情况下调用Shooter,您应该可以执行以下操作:
for iShooter = obj.num_shooters:-1:1
obj.ShooterArray(iShooter) = Shooter(num_targets, time_steps);
end
然而,事实证明,由于某种原因,将对象数组直接存储在另一个对象的属性中会产生非常糟糕的性能. (在这种情况下,阵列预分配可能效果不佳).因此,在这种情况下,使用辅助变量并立即将完整数组分配给属性是提高性能的一个好主意.
我会尝试:
for iShooter = obj.num_shooters:-1:1
a(iShooter) = Shooter(num_targets, time_steps);
end
obj.ShooterArray = a;
再次 – 有关详细信息,请参阅this discussion
最后
以上就是动人柜子为你收集整理的matlab怎么创建数组对象,数组 – matlab初始化对象数组的全部内容,希望文章能够帮你解决matlab怎么创建数组对象,数组 – matlab初始化对象数组所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复