2016-03-31 6 views
0

Я пытаюсь преобразовать код MATLAB в код C с помощью «MATLAB Coder», но анонимные функции не допускаются.Matlab coder fzero function

Как я могу преобразовать, например, в 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

У вас есть «анонимная» функция, а не " undefined ", просто для уточнения терминологии.

Чтобы преобразовать следующее именованной функции:

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 константой, чтобы передать функцию 1-аргумента в fzero. Вы также можете установить константу 'x' и передать функцию' c'. – gariepy