如何在 Matlab 中生成类的实例并将它们保存在数组中?

Posted

技术标签:

【中文标题】如何在 Matlab 中生成类的实例并将它们保存在数组中?【英文标题】:How can I generate instances of a class in Matlab and save them in an array? 【发布时间】:2017-10-12 23:43:04 【问题描述】:

我开始了一个代码,我必须在其中生成给定类的大量实例。我想像在 python 中那样将它们保存到一个数组中。

这就是我想做的:

   object_list = [];
   for i=1:100
      my_object = MyClass(i)
      object_list(i) = my_object
   end

在 Python 中这是可行的,因为我可以将任何我想要的内容添加到我的列表中。 我应该如何在 Matlab 中做到这一点?

/得到的错误是这样的: “从 MyClass 转换为 double 是不可能的。” 我猜 Matlab 数组的行为与通用 python 列表不同,实际上需要包含双精度数。 /

【问题讨论】:

您当然也可以在 MATLAB 中追加,但追加并不是一个好主意。更好的方法是预先分配到预期长度。对于您的情况,您需要一个单元阵列。所以初始化一个预期大小的单元格数组,即object_list=cell(1,100),并将object_list(i)替换为object_listi,即花括号。进行该更改的原因正是错误消息所暗示的。 (同时避免使用i(和j)作为变量名,因为它们默认代表虚数) 【参考方案1】:

您可以将数组初始化为对象数组:

object_list(100) = MyClass(100);
for i=1:100
   object_list(i) = MyClass(i);
end

更多关于Initialize Object Arrays的信息。

【讨论】:

以上是关于如何在 Matlab 中生成类的实例并将它们保存在数组中?的主要内容,如果未能解决你的问题,请参考以下文章

在 MATLAB 中生成要保存在 .mif 文件中的正弦波

在 ActionScript 3.0 中生成敌人

保存 Matlab 对象实例会导致无限循环

如何在matlab中将句柄对象层次结构保存到磁盘

如何在 MATLAB 中创建和保存大型数据集?

如何从 txt 文件中读取特定的单词和数字并将它们保存在矩阵中