2016-03-31 11 views
0

Ich versuche, einen MATLAB-Code mit "MATLAB Coder" in C-Code zu konvertieren, aber anonyme Funktionen sind nicht erlaubt.Matlab Coder fzero Funktion

Wie kann ich zum Beispiel konvertieren eine fzero Funktion als

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) 

in eine normale Funktion, zum Beispiel, den gesamten Code zu C konvertieren

+1

Was ist eine "undefinierte Funktion" in diesem Zusammenhang? Ich sehe nichts Undefiniertes. – rayryeng

+0

Entschuldigung, ich werde es umbenennen. Sie haben Recht – Mauro

Antwort

1

Sie haben „anonymous“ Funktionen, nicht " undefined "Funktionen, nur um die Terminologie zu klären.

Um die folgenden zu einer benannten Funktion zu konvertieren:

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

: Schreibe:

function result = myfun(x,c) 

result = cos(c*x); 

end 

Für die zweite Funktion, schreiben Sie:

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

end 

Schließlich rufen fzero wie dies:

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

was soll ich tun, wenn $ c $ auch ein Parameter ist (keine Konstante = 2)? – Mauro

+0

Nicht sicher, ob ich folge ... in der ersten Funktion ist 'c' ein Parameter, zusammen mit x. In Ihrem Beispiel haben Sie c konstant gemacht, damit Sie eine 1-Argument-Funktion an fzero übergeben können. Sie könnten auch 'x' konstant machen und nur eine Funktion von' c' übergeben. – gariepy