2

我有一个对象数组,都是同一个类。是否可以一次将函数(在类的方法部分中定义)应用于数组中的所有对象?例如,类定义是:

classdef myClass
        properties
            x=0;
        end

        methods
            function obj=plus1(obj)
                obj.x=obj.x+1;
            end
        end

    end

现在我可以创建一个 myClass 类的对象 A:

A=myClass;

并应用方法 plus1:

A=A.plus1;

但是,如果我创建同一类的对象数组:

A(1,10)=myClass;

是否可以一次将“plus1”应用于 A 的 10 个对象?

就像是:

A(:)=A(:).plus1;

多谢你们 :)

4

2 回答 2

1

您可以使用arrayfun

>> A = arrayfun( @(x) x.plus1, A );
于 2013-03-17T15:50:16.973 回答
1

只要该方法plus1是为对象数组定义的,它就可以工作:

    methods
        function obj=plus1(objList)
            for obj = objList(:)'
               obj.x=obj.x+1;
            end
        end
    end

现在你可以调用A = plus1(A)or A=A.plus1even ifA是一个对象数组。

于 2013-03-17T16:10:26.417 回答