【发布时间】:2013-06-11 07:53:09
【问题描述】:
我创建了一个对象数组,我想在向量操作中分配一个属性值,而不使用 for 循环。不幸的是我得到一个错误。
问题的简化示例。
classdef clsMyClass < handle
properties
dblMyProperty1
end
methods
function obj = clsMyClass()
end
end
end
并且在运行时
vecMyArray = clsMyClass.empty(100,0);
vecMyArray(100) = clsMyClass;
vecMyArray.dblMyProperty1 = 1:100;
我们得到以下错误:
???点名称中右侧元素的数量不正确 任务。左侧缺少 [] 可能是原因。
任何帮助将不胜感激。
【问题讨论】:
-
我的两分钱:
for循环可能是您最快的解决方案。第一行代码 (.empty(...)) 也没有做任何事情,它的效果立即被第二行代码替换。 -
感谢 MATLAB 的矢量化,您这样做是“错误的”。考虑将类“由内而外”——与其拥有一个对象数组,不如拥有一个其属性本身就是数组的对象。见this treatise on MATLAB and OOP。
-
@DangKhoa,我计划只拥有 20 个包含多个大型数组的对象。我想一次调用这 20 个对象的方法并更改它们的属性。
-
@Bee,谢谢你是对的。我添加了这一行,因为这里解释了原因:stackoverflow.com/a/7879881/903186
-
你在初始化对象吗?为什么不在类定义中使用默认值设置属性?
标签: arrays matlab object properties