How to use quadgk with Matlab coder?
古いコメントを表示
According to the list here: http://www.mathworks.se/help/simulink/ug/functions-supported-for-code-generation--alphabetical-list.html, quadgk is supported for code generation. I have tried exporting the following code:
%#codegen
function a = bk_testfunc(b,c)
f = @(x) exp(-x.^2).*log(x).^2;
a = quadgk(f,b,c);
but I get the error message "This kind of expression is not supported." for the @(x) part.
Quadgk does not seem to accecpt inserting a function as the first argument without the @ symbol, like
a = quadgk(exp(x),b,c);
or
a = quadgk(exp(),b,c);
I cannot find any documentation on how to use quadgk with the Coder, which is particularly frustrating since the Coder does not seem to accept the normal (@) way of calling quadgk, and quadgk does not accept to be called without the @ symbol identifying the function to be integrated.
採用された回答
その他の回答 (2 件)
Walter Roberson
2013 年 10 月 8 日
function fx = f_testfunc(x)
fx = exp(-x.^2).*log(x).^2;
end
now in your quadgk call, try
%#function f_testfunc
a = quadgk('f_testfunc', b, c);
the %# line is likely necessary.
1 件のコメント
Ryan Livingston
2013 年 10 月 9 日
The pragma:
%#function ...
is only relevant to MATLAB Compiler rather than MATLAB Coder. It provides a hint to MATLAB Compiler that a function is required to be packaged up.
Bjørn
2013 年 10 月 8 日
2 件のコメント
Ketan
2013 年 10 月 9 日
Hi Bjørn,
Have you tried passing a function handle for f_testfunc to quadgk using @ style syntax? IE
a = quadgk(@f_testfunc,b,c)
where 'f_testfunc' is either defined as a subfunction of bk_testfunc or defined in another file. MATLAB coder does not support anonymous functions, but it does support function handles.
Walter Roberson
2013 年 10 月 9 日
If you put multiple functions in the same file, they they all have to have 'end' matching their "function" statement (as in your second function), or else none of them can have that matching "end". So add an "end" after your "a = " statement.
カテゴリ
ヘルプ センター および File Exchange で t Location-Scale Distribution についてさらに検索
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!