【发布时间】:2015-07-17 13:58:24
【问题描述】:
假设我在 MATLAB 中定义了一个类 house。
除了循环的幼稚想法之外,我如何构造一个 house 类的对象数组?
【问题讨论】:
-
我想你会在某处需要循环。无论是在构造函数中还是在您创建对象的位置。查看 Matlab 文档中的 this。
假设我在 MATLAB 中定义了一个类 house。
除了循环的幼稚想法之外,我如何构造一个 house 类的对象数组?
【问题讨论】:
您可以使用houseArray = repmat(house, numHouses, 1) 创建house 结构的列数组。如果您需要 n x m 结构数组,请将 1 更改为其他内容。
【讨论】:
一种方法是创建house 类的单个对象,然后使用repmat 将该实例复制到更大数组的所有元素中。
另一种方法是通过将 house 类的对象分配给后面的元素来创建数组 - 例如通过说 myhouses(2,3) = house。这与你说mynumbers(2,3) = 2 时的工作方式相同 - 你得到一个数组[0,0,0;0,0,2]。
当您使用该语法时,MATLAB 需要创建一个默认值 house(其方式与使用默认值零填充数值数组的其他元素相同)。为此,它使用零输入参数调用 house 的构造函数 - 因此您需要以这样的方式实现该构造函数,当使用零输入调用时,它会输出 house 的默认实例。
第三种选择是实现构造函数,使其可以接受指定输出数组大小的输入参数,然后直接输出具有该大小的对象数组。
【讨论】: