2013-03-17 85 views
2

我有一個對象數組,全部是相同的類。 是否可以將函數(在類的方法部分中定義)一次性應用於數組中的所有對象? 例如,類定義是:MATLAB可以將一個函數應用於一個對象數組

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; 

謝謝你們:)

回答

1

您可以使用arrayfun

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

只要plus1爲對象的數組定義的方法,它將工作:

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

即使A是一組對象,現在您可以致電A = plus1(A)A=A.plus1

+0

我不確定這很有效;我認爲有些價值觀可能會被錯誤分配。在聊天中注意到:http://chat.stackoverflow.com/rooms/26329/discussion-between-david-and-jonas – 2013-03-18 02:01:33

相關問題