2016-03-31 95 views
0

我想使用「MATLAB編碼器」將MATLAB代碼轉換爲C代碼,但匿名函數是不允許的。Matlab編碼器fzero函數

我如何轉換例如一個fzero功能

myfun = @(x,c) cos(c*x); % parameterized function 
c = 2;     % parameter 
fun = @(x) myfun(x,c); % function of x alone 
x = fzero(fun,0.1) 

成一個正常的功能,例如,整個代碼轉換爲C.

+1

在這種情況下什麼是「未定義函數」?我沒有看到任何未定義的內容。 – rayryeng

+0

對不起,我會重命名它。你是對的 – Mauro

回答

1

你有「匿名」的功能,而不是「未定義「的功能,只是爲了清除術語。

以下轉換爲命名函數:

myfun = @(x,c) cos(c*x); % parameterized function 

這樣寫:

function result = myfun(x,c) 

result = cos(c*x); 

end 

對於第二個功能,這樣寫:

function result = myfun2(x) 
c = 2; 
result = cos(c*x); 

end 

最後,調用fzero像這個:

x = fzero(@myfun2, 0.1); 
+0

如果$ c $也是一個參數(不是常數= 2),我該怎麼辦? – Mauro

+0

不知道我是否按照...在第一個函數中,'c'是一個參數,以及x。在你的例子中,你使c不變,所以你可以傳遞一個參數爲fzero的函數。你也可以使'x'恆定,只傳遞'c'的函數。 – gariepy