2012-05-10 31 views
0

這裏的多數民衆贊成給我的麻煩一行代碼。Arrayfun語法和用法與類方法

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

Container是一個類,它的一個屬性是節點的對象數組,該數組稱爲nodelist。

每個節點都有一個函數調用配置,其用於初始化它。 Config需要一個輸入,其中一個是函數的句柄。我正在傳遞的函數句柄需要一個與它一起傳遞的常量,它由0表示。

在這種情況下,我想在具有特定功能的nodelist中的位置2到6處配置節點,所以我認爲使用arrayfun而不是for循環。

不幸的是,MATLAB barfs以「太多的投入」的功能配置。我在寫什麼錯?這個例子清楚嗎?

+0

僅僅通過arrayfun的doc去,它看起來像第二個參數arrayfun應該是要在其上應用的功能結構/矢量@config,而不是索引。當然,這並不能解釋你得到的「太多輸入」錯誤。但也許嘗試傳遞nodelist(2:6)作爲第二個參數而不是2:6?您的意見 – kitchenette

+0

謝謝,我沒有注意到的那部分。 – krapht

回答

2

我想通了。我最終什麼事做使用嵌套匿名函數,像這樣:

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

如果我理解正確的話,config是包含在您的nodelist陣列中的對象的方法。在這種情況下,在平時的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