2012-10-03 192 views

回答

3

語法@(X,y) gaussianKernel(X, y, sigma)通過將此現有函數guassianKernel(X, y, s)的第三個參數綁定爲具體值sigma來創建anonymous function

如果您檢查svmTrain函數簽名,您會看到它允許傳入函數,這是匿名函數的作用。

+0

因此,第三個參數是靜態綁定的而Xy是在運行時綁定的? – erogol

+1

第三個參數是一個常量,是的。如果您熟悉Python中的「partial」(或功能計算中的類似物),那就是這樣。其他參數可以在'svmTrain'過程中自由傳入和評估。所以就像你得到一個新的幻像函數,它有兩個參數而不是三個,但是其他的一切都和以前一樣,一直使用第三個參數的傳入常量。 – ely

1

這裏發生了兩件事:

首先是函數傳遞。例如,您的代碼中有一個函數foo,並且您想將其作爲參數傳遞。在這種情況下,您使用@運算符。

function MainScript 
    goo(@foo);  
end 

function goo(fHandle) 
    fHandle(); 
end 

function foo 
    disp('Hello world!'); 
end 

第二個是匿名函數。匿名函數的功能與其他函數非常相似,除了它在運行時定義,它沒有名稱,並且它本身綁定了傳遞給它的變量的本地副本。 (有關更多信息,請參見Closure)。例如:

function MainScript 
    foo = @() (disp('Hello world!')); 
    goo(@foo); 
end 
相關問題