2012-05-10 14 views
0

これは私に問題を引き起こすコード行です。Arrayfunの構文とクラスメソッドでの使用

arrayfun(@(x)container.nodelist(x).config(@a_func_handle,0),2:6); 

コンテナは、そのプロパティの1つがノードのオブジェクト配列であり、その配列がnodelistと呼ばれるクラスです。

各ノードには、初期化に使用されるconfigという機能があります。 Configは1つの入力を受け取り、その1つは関数のハンドルです。私が渡している関数ハンドルは、0で表される定数を必要とします。

この場合、特定の関数でnodelistの2から6の位置にノードを設定したいので、 forループの代わりにarrayfunを使うと考えました。

残念ながら、Matlabは機能設定のために「入力が多すぎます」と言います。私は間違って何を書いていますかこの例は明確ですか?

+0

だけarrayfunのdocで行く、それはarrayfunするために、第2引数のように見えますが、あなたが関数を適用したい/ベクトル構造であるために仮定されていますので、どのようなもの、私がやってしまったことは、ネストされた無名関数を使用していました@config、インデックスではありません。確かに、これはあなたが得る "入力が多すぎる"というエラーを説明していません。しかしおそらく2:6の代わりに第2引数としてノードリスト(2:6)を渡してみてください。 – kitchenette

+0

アドバイスをいただき、ありがとうございました。 – krapht

答えて

2

が、私はそれを考え出しました。

arrayfun(@(y)y.config(@(x)(configSlave(x,0))),exp.pico_list(2:6)); 
0

私が正しく理解していれば、confignodelistアレイに含まれるオブジェクトのメソッドです。この場合、通常のMATLABの方法では、メソッドを呼び出すオブジェクトが最初の引数として渡されます。たとえば、あなたはこのようにconfigメソッドを記述する必要があります:

function config(obj, fcnHandle, value) 
    obj.FunctionHandle = fcnHandle; 
    obj.Value = value; 
end 
+0

ああ、私は私の例をクリアしました。私が書いたことは、関数ハンドル自体に変数を渡す必要があることです。別名http://www.mathworks.com/help/techdoc/matlab_prog/brfpxhw-1.html – krapht

関連する問題