Matlab 编码器 fzero 函数

Posted

技术标签:

【中文标题】Matlab 编码器 fzero 函数【英文标题】:Matlab coder fzero function 【发布时间】:2016-03-31 17:16:17 【问题描述】:

我正在尝试使用“MATLAB Coder”将 MATLAB 代码转换为 C 代码,但不允许使用匿名函数。

如何将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】:

您有“匿名”函数,而不是“未定义”函数,只是为了澄清术语。

将以下内容转换为命名函数:

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);

【讨论】:

$c$也是参数(不是常数=2)怎么办? 不确定我是否遵循...在第一个函数中,c 是一个参数,以及 x。在您的示例中,您将 c 设为常量,因此您可以将 1 参数函数传递给 fzero。您也可以将x 设为常量,并仅传递c 的函数。

以上是关于Matlab 编码器 fzero 函数的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 matlab 编码器将 matlab 函数“pchip”转换为 c 代码

用于转换特征提取函数的 Matlab 编码器

MATLAB 中的 GPU 编码器,用于大量面向对象的代码

在 Matlab 编码器中使用可变大小的参数

数组和 matlab 编码器的问题

将 C 字符数组转换为 Matlab 字符串 [Matlab 编码器]