2015-07-20 31 views
0

(我已經看到了一些回答過類似的問題,但他們並沒有真正回答什麼是被問如此虐待試圖解釋這一點比其他問題更)調用X的函數在Matlab

標題沒有太多的信息,但幾乎我想寫一個matlab腳本,以完成各種重複的二分法,(對我的問題不是很重要,但它是一種找到數學函數根的方法。)

我遇到的問題是,此刻我無法弄清楚如何爲不同的功能調用我的腳本。目前我必須將每個函數寫入腳本,並且每個新函數都必須更改腳本。

我想調用我的函數,如bisection(f(x),a,b,N)(不要擔心a,b,N),這樣我可以在我調用它時選擇函數而不是在腳本本身中。但是當我將我的f(x)寫成x^2 +x之類的東西時,它會嘗試評估它是否存在並返回錯誤。有沒有辦法調用x的函數,並將其作爲一個函數,以便以後我可以評估它在不同的值。

e.g. f(2)=6, f(a)=a^2 +a, f(b)=b^2 +b. 
+0

所以你想在另一個函數的參數中放置一個函數,就是這樣嗎? – Ikaros

回答

3

您應該使用function handles

讓我們舉個例子:

%Here f is the function you want to call 
function M = testfun(f,x) 
    M = f(x); 
end 

然後調用它,你把作爲自變量的函數處理

f = @(x) magic(x); 
M = testfun(f,3) 
M = 

    8  1  6 
    3  5  7 
    4  9  2 
1

如果你的函數f是一個「簡單」的功能,這似乎使用的地方anonymous functions

如果你確定他們總是會有相同的輸入(f(x)總是),​​那麼你可以創建功能:

[email protected](x)(x.^2+x+2); 

或...

[email protected](x)(argtg(x)+log10(x.^2)); 

,然後調用你的函數傳遞f作爲參數。在bisection內部,您可以撥打ff(3)或任意數字,它會返回結果。