MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn moreOpportunities for recent engineering grads.

Apply Today**New to MATLAB?**

Asked by Emmanuel Luevano
on 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

Answer by Jan Simon
on 20 Nov 2012

Accepted answer

`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 ?

Emmanuel Luevano
on 21 Nov 2012

these are good tips, I'll try with these, thanx, back with the results.

Jan Simon
on 21 Nov 2012

Another useful implementation of the Fisher-Yates-Shuffle in pure Matlab: http://www.mathworks.com/matlabcentral/fileexchange/30101-rpg-lab

## 1 Comment

## Emmanuel Luevano (view profile)

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/54192#comment_112269

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?