normrnd, normpdf, pdf not working for code generation
2 ビュー (過去 30 日間)
古いコメントを表示
I'm trying to use MATLAB Coder to compile a script with normrnd, normpdf and pdf functions. However, I keep getting errors saying these functions are not supported for code generation, even though according to the online documentation it is supported. Could someone tell me a workaround for this issue?
I want to avoid using coder.extrinsic to ensure the compiled code runs as fast as possible. Could it have something to do with the fact that I am using objects?
Thank you,
Jai
0 件のコメント
採用された回答
Mike Hosea
2014 年 7 月 3 日
If you're using 2013a or earlier, they aren't supported. If you're using 2013b or later, they are supported. You'll need the obvious licenses, of course, but it sounds like you have them if you can call those functions from MATLAB and you can compile anything with MATLAB Coder. Could be an installation issue. Do you have a toolbox/stats/eml/ directory?
Also, I'm assuming we're talking about errors when compiling, because if the screener tool has it wrong then the problem would most likely be limited to the screener tool.
2 件のコメント
Mike Hosea
2014 年 7 月 3 日
編集済み: Mike Hosea
2014 年 7 月 3 日
It's probably not going to be much slower in the case of normrnd and normpdf. Some of the distributions you can access through pdf() might be faster when compiled. Of course you can only use extrinsic functions for mex targets. Also, be sure that you pre-define the output type. For example,
coder.extrinsic('normrnd');
y = zeros(m,n);
y = normrnd(mu,sigma,m,n);
Looks like a redundant definition of y, but in fact it tells the compiler what the size and class of the output of normrnd is going to be.
Another approach is to write your own normrnd and normpdf. The former is built on randn (which does the heavy lifting--just need to transform the output to have the mean and standard deviation you want), and the latter is a textbook sort of thing. Other distributions accessible through pdf() can, I admit, be much more involved.
その他の回答 (0 件)
参考
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!