Matlab Coder : codegen for mvnrnd
3 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hi, I'm trying to generate standalone C code of the mvnrnd function in Matlab with Matlab Coder. By doing so, I keep getting error:
>> mu = [1 -1]
mu =
1 -1
>> sigma = [.9 .4; .4 .3]
sigma =
0.9000 0.4000
0.4000 0.3000
>> codegen -config:lib -report -c mvnrnd1.m -args {mu,sigma}
??? The input matrix must be variable-size in both dimensions when nargout == 2
How do I insert variable-size matrix in -args? Thank you!
0 commentaires
Réponses (2)
Mike Hosea
le 9 Avr 2012
Instead of using sigma in that -args list, use
sigma_type = coder.typeof(0,[2,2],[true,true])
This means the type is double and real (that is the type of the first argument "0"). The second argument says that the array is up to 2-by-2, and the third argument says that both dimensions are variable in size.
Good luck. The conversion looks doable, but there may be other snags, and it's the type of function where I'd probably do a lot of re-writing to make it efficient for code generation (e.g., I'd write a little loop to calculate sum(D<0) instead of creating a logical array and then summing it). -- Mike
8 commentaires
Jane Jean
le 15 Avr 2012
1 commentaire
Mike Hosea
le 16 Avr 2012
I'm glad, but I'm a little confused. If you are just building a mex function, why not make MVNRND extrinsic?
Voir également
Catégories
En savoir plus sur Execution Speed dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!