2012-03-27 11 views
0

リスト内のすべてのオブジェクトのクラスメソッドを呼び出すことは可能ですか? 例:同じクラスのオブジェクトリストのメソッドを呼び出す

%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); 

答えて

1

あなたがarrayfun()cellfun()またはstructfun()を使用する場合は、「リスト」は何を意味するのかに応じて、そうすることができます。

のは、それが配列(行列)であると仮定しましょう、あなたはmy_objectsと含まれるオブジェクトのそれぞれについて、obj.myfunc(42)を呼び出すオーバー

arrayfun(@(obj)obj.my_func(42), my_objects) 

た繰り返し処理を行うことができます。

0

ないあなたが希望としてエレガントただし、リストを繰り返し処理し、各オブジェクトを順番に参照してから、参照を介して条件付きで操作を実行できますか?

for iObj = 1:length(my_objects) 
    anObj = my_objects(iObj) 
    if (predicate(anObj)) 
     anObj.my_func(42); 
    end 
end