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

标签 oop matlab

我在 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/

相关文章:

laravel - Laravel 所有请求中的附加属性

ios - 模态创建类对象和设置值

c++ -/usr/../libstdc++.so.6 : version `GLIBCXX_3.4.11' not found (required by . ..)

matlab - Simulink 中整数到二进制的转换

java - 在java中传递一个抽象类而不是一个对象?

java - 保存、获取和设置立方体的长度(扩展类)

java - 如何添加类的匿名实例作为 ActionListener

python - 编写 MATLAB 代码的好习惯?

image - 将图像置于另一图像的黑色像素中

java - Matlab 控件和 Java Servlet