2
我想傳遞一個帶有參數的函數給另一個函數,該函數將函數處理程序(指針)作爲參數,但函數的一些參數處理程序需要修復。在MATLAB中如何做到這一點?如何在MATLAB中傳遞一個帶有固定參數的函數作爲參數
具體而言,我想使用fminsearch(fun,x0)
最小化函數h(eta)
。一個顯而易見的問題是,如果我通過x0
中的所有參數,它將使所有參數最小化,但這不是我想要做的。我真正想要做的是不是:
我曾嘗試以下,似乎爲我測試了它的工作至今:
function [ h ] = function_returner(x)
%
t = -10000;
h = @(eta)-10*x + t + eta^2;
end
和腳本來測試它:
h = function_returner(0);
h(3) %-9991
[x,fval,exitflag] = fminsearch(h,[10]) %returns [0, -10000, 1]
返回正確的最小值和獲得最小值的x的正確值。我想確保的是,在返回函數處理函數後,固定的變量h
確實保持不變。即如果傳遞h
,那麼如何確保變量不會因爲進入與函數處理程序具有相同變量名稱的環境而更改值?
我還寫道:
x = inf;
t = inf;
eta = inf;
h = function_returner(0);
h(3) %-9991
[x,fval,exitflag] = fminsearch(h,[10]) %returns [0, -10000, 1]
,似乎去不受影響(即它的作品,因爲我希望它的工作)。但爲了安全起見,我希望沒有一個奇怪的邊緣條件,這是行不通的。