2016-03-31 50 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