MATLAB coder - can't get the 'coderand' .exe to work correctly

2 visualizaciones (últimos 30 días)
michael brewin
michael brewin el 4 de Mayo de 2018
Comentada: michael brewin el 11 de Feb. de 2019
Hi. I'm running MATLAB C-coder for the first time, running through the 'coderand' example.
https://uk.mathworks.com/help/releases/R2015b/coder/ug/ standalone-c-c-executables-from-matlab-code.html
It works to produce C source code, (which is not overly clear) a MEX file and an executable. The MEX file works fine
Trial>> coderand_mex
ans =0.2785
Trial>> coderand_mex
ans =0.5469
Trial>> coderand_mex
ans =0.9575
but the .exe file doesn't seem to work, running inside MATLAB or a DOS cmd window. It produces the same number each time its ran
C:\ALL\SOAR\MATLAB_DEV\coder_play>coderand.exe
coderand=0.814724
C:\ALL\SOAR\MATLAB_DEV\coder_play>coderand.exe
coderand=0.814724
C:\ALL\SOAR\MATLAB_DEV\coder_play>coderand.exe
coderand=0.814724
I set the tool t build for MATLAB Windows Host and the Compiler to MinGW64 (I know this can cross compile too), but say it was creating a Linux binary, I would expect a .bin file output and I would not expect it to run.
(i) Can somebody explain what settings I have missed or wrong. (ii) Can somebody explain the some basis to the source code generation, I know that generating 'true' random numbers is something of a science topic The .exe produced is 61K, I would expect something a lot less.
(iii) It would be re-assuring if this example included some output too. I have covered many aspects of MATLAB & its toolboxes and add-ons in recent weeks and this is the first time that I've fully stumbled
Thanks, Mike B
  4 comentarios
michael brewin
michael brewin el 15 de Mayo de 2018
Editada: michael brewin el 15 de Mayo de 2018
I hoped that the question was really simple. The coderand example is the most simple MATLAB example that I have seen. So it is only 2 lines.
function r = coderand() %#codegen r = rand();
I expected that this would get transformed into an quivalent 'C' rand function and produce different values each time, as the MEX file does.
There is no documentation that I can find as to how the rand function operates, what it uses as its seed etc. I didn't expect a 61K .exe file from it, but that point is secondary. The fact is that the example doesn't work on my ordinary machine and there is nothing I can think of that I can have set wrong. Please can you just run this line through the C coder and tell me if it works.
Thankyou for the URL for support, I have bookmarked it.
Mike.
Jan
Jan el 16 de Mayo de 2018
You do not have to bookmark the "Contact Us" link, because you find it on all pages of the MathWorks sites.

Iniciar sesión para comentar.

Respuesta aceptada

Jan
Jan el 16 de Mayo de 2018
To get a documentation about rand, see doc rand. At the bottom there is the link: Why Do Random Numbers Repeat After Startup?. There you find the example:
If you want to avoid repeating the same random number arrays when
MATLAB restarts, then execute the command,
rng('shuffle');
Insert this before r = rand().
  4 comentarios
Walter Roberson
Walter Roberson el 11 de Feb. de 2019
'shuffule' is not the same as 'shuffle'
michael brewin
michael brewin el 11 de Feb. de 2019
Hi. yes, you're right, but If you see the .png file, the command syntax was correct, 'shuffle' ...

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Startup and Shutdown en Help Center y File Exchange.

Productos

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by