如何用Matlab quadgk编码器?

2视图(30天)
Bjørn
Bjørn 2013年10月8日
评论道: Bjørn2013年10月11日
根据这里的列表: http://www.mathworks.se/help/万博1manbetxsimulink/ug/万博1manbetxfunctions-supported-for-code-generation--alphabetical-list.html 支持,quadgk代码生万博1manbetx成。我有尝试导出下面的代码:
% # codegen
函数一个= bk_testfunc (b, c)
f = @ (x) exp (- x ^ 2)。*日志(x) ^ 2;
一个= quadgk (f, b, c);
但我得到错误消息”这种不支持表达式。”@ (x)的部分。万博1manbetx
Quadgk似乎并不accecpt插入函数的第一个参数没有@符号,等等
一个= quadgk (exp (x), b, c);
一个= quadgk (exp (), b, c);
我不能找到任何文档如何使用quadgk编码器,这是特别令人沮丧,因为编码器似乎并没有接受正常(@)的方式调用quadgk,和quadgk不接受被称为没有@符号识别功能集成。

接受的答案

弗雷德·史密斯
弗雷德·史密斯 2013年10月9日
代码生成不支持万博1manbetx
  • 匿名函数@ (x) x + 2
  • 嵌套函数(函数与最终在年底前前面的函数)。
代码生成支持一般的函数处理:@f万博1manbetx
举个例子给你你需要的是这样的:
函数一个= bk_testfunc (b, c)
一个= quadgk (@f_testfunc, b, c);
结束%可选。
函数fx = f_testfunc (x)
fx = exp (- x ^ 2)。*日志(x) ^ 2;
结束%可选,需要只有你保持前一个。
1评论
Bjørn
Bjørn 2013年10月11日
谢谢你,感谢其他人谁回答我的问题。现在它的工作原理。

登录置评。

更多的答案(2)

沃尔特·罗伯森
沃尔特·罗伯森 2013年10月8日
函数fx = f_testfunc (x)
fx = exp (- x ^ 2)。*日志(x) ^ 2;
结束
现在在你quadgk电话,试一试
% #函数f_testfunc
一个= quadgk (“f_testfunc”,b, c);
% #线可能是必要的。
1评论
瑞安·利文斯顿
瑞安·利文斯顿 2013年10月9日
编译指示:
% #功能…
只是与MATLAB编译器而不是MATLAB编码器。它提供了一个提示MATLAB编译器,一个函数需要打包。

登录置评。


Bjørn
Bjørn 2013年10月8日
谢谢,但我仍然有问题。我做了以下几点:第一个文件:
% # codegen
函数一个= bk_testfunc (b, c)
% #函数f_testfunc
一个= quadgk (“f_testfunc”,b, c);
第二个文件:
% # codegen
函数fx = f_testfunc (x)
fx = exp (- x ^ 2)。*日志(x) ^ 2;
结束
编码器给出了下面的错误信息:“首先输入参数必须是一个函数处理。”
我也试着把两个功能相同的文件:
% # codegen
函数一个= bk_testfunc (b, c)
% #函数f_testfunc
一个= quadgk (“f_testfunc”,b, c);
函数fx = f_testfunc (x)
fx = exp (- x ^ 2)。*日志(x) ^ 2;
结束
但这给了下面的错误:“解析错误:文件:bk_testfunc。m: 9列:1这个语句是不完整的。”(line 9 is the line with the end statement).
结束语句后第一个函数给出了相同的错误消息函数在单独的文件中。以分号结束后第一个函数给出了错误“函数参数列表”bk_testfunc”不能确定由于语法错误的函数”。虽然我有点进一步,我仍然不能生成代码。
2的评论
沃尔特·罗伯森
沃尔特·罗伯森 2013年10月9日
如果你把多个功能相同的文件,他们都有“结束”匹配他们的“功能”声明(如第二个函数),否则没有人可以匹配“结束”。所以添加一个“结束”“=”后的声明。

登录置评。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!