matlab怎么创建数组对象,数组 – matlab初始化对象数组

看起来您正在尝试创建一个句柄对象(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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值