MATLAB可以将函数应用于对象数组

时间:2013-03-17 14:03:38

标签: arrays oop class function matlab

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

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;

谢谢你们:)

2 个答案:

答案 0 :(得分:1)

您可以使用arrayfun

>> A = arrayfun( @(x) x.plus1, A );

答案 1 :(得分:1)

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

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

现在即使A = plus1(A)是一个对象数组,您也可以调用A=A.plus1A