replace the function "randperm" into code from embedded block SIMULINK

1 vue (au cours des 30 derniers jours)
Emmanuel Luevano
Emmanuel Luevano le 19 Nov 2012
hi, I need to generate a c code from the next code wrote on an embedded editor from embedded block from simulink, but randperm is not supported by code generation, is there some way to do it?
thanks for you support
Size = 100
n = 50
pop = zeros(Size,n);
pop(1,:) = (1:n);
for k = 2:popSize
pop(k,:) = randperm(n);
end
  1 commentaire
Emmanuel Luevano
Emmanuel Luevano le 20 Nov 2012
btw, if I use eml.extrinsic to execute it, I understand that the operation is performed externally, but, it affect my code when this is done?

Connectez-vous pour commenter.

Réponse acceptée

Jan
Jan le 20 Nov 2012
randperm() is actually:
[~, p] = sort(rand(1,n))
Does this work in code generation?
In the current Matlab version, randperm uses the smarter Fisher-Yates-Shuffle, when 2 inputs are used. Would a corresponding C-Mex function work: FEX: Shuffle ?
  2 commentaires
Emmanuel Luevano
Emmanuel Luevano le 21 Nov 2012
these are good tips, I'll try with these, thanx, back with the results.
Jan
Jan le 21 Nov 2012
Another useful implementation of the Fisher-Yates-Shuffle in pure Matlab: http://www.mathworks.com/matlabcentral/fileexchange/30101-rpg-lab

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Deployment, Integration, and Supported Hardware 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!

Translated by