是否可以调用列表中所有对象的类方法? 例如:
%my_objects contains a list of instances of the same user matlab class
my_objects(:).my_func(42);
这样做的目的是过滤索引而不是使用“:” 例如:
my_objects(1:10).my_func(42);
或
my_objects(find(...)).my_func(42);
答案 0 :(得分:1)
如果您使用arrayfun()
,cellfun()
或structfun()
,则可以执行此操作,具体取决于“列表”的含义。
我们假设它是一个数组(矩阵),你可以做
arrayfun(@(obj)obj.my_func(42), my_objects)
迭代my_objects
并为每个包含的对象调用obj.myfunc(42)
。
答案 1 :(得分:0)
可能没有您想要的那么优雅,但是您可以遍历列表,依次引用每个对象,然后通过引用有条件地执行操作吗?
for iObj = 1:length(my_objects)
anObj = my_objects(iObj)
if (predicate(anObj))
anObj.my_func(42);
end
end