gpt4 book ai didi

oop - 如何在 MATLAB 中预分配类数组?

转载 作者:太空宇宙 更新时间:2023-11-03 19:12:16 25 4
gpt4 key购买 nike

我在 MATLAB 中有一个对象数组,我在循环中调用了它们的构造函数:

antsNumber  = 5;
for counter = 1: antsNumber
ant(counter) = TAnt(source, target);
end

MATLAB 警告我使用预分配来加快进程。我确实知道预分配的好处,但我不知道如何为对象执行此操作。

最佳答案

这里有一些选项,它们要求您为 TAnt 设计类构造函数,以便它能够处理 no input argument case :

  • 您可以创建默认的 TAnt 对象(通过调用不带输入参数的构造函数)并使用 REPMAT 复制它在进入 for 循环之前初始化数组:

    ant = repmat(TAnt(),1,5);  %# Replicate the default object

    然后,您可以遍历数组,用新对象覆盖每个默认对象。

  • 如果您的 TAnt 对象都使用相同的数据进行初始化,并且它们不是handle class 派生的,您可以创建 1 个对象并使用 REPMAT复制它:

    ant = repmat(TAnt(source,target),1,5);  %# Replicate the object

    这将使您完全避免循环。

  • 如果TAnthandle class派生的,上面的第一个选项应该可以正常工作,但第二个选项不会,因为它会给你 相同 对象的句柄的 5 个副本,而不是 distinct 的 5 个句柄对象。

关于oop - 如何在 MATLAB 中预分配类数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2510427/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com