Coder - Static size string in sprintf

11 visualizaciones (últimos 30 días)
amin ya
amin ya el 7 de Mzo. de 2019
Editada: amin ya el 8 de Mzo. de 2019
How can I prevent MATLAB Coder to generate variable size code for a simple number insertion into a string?
for i=1:4
name=sprintf('Data%d.bin',int8(i));
stuff(name)
end
In the generated C code it uses a lot of functions like emxutil to determine the size of the generated string for sprtintf.
I just want to say that i is only one digit. How can I do that?!
The followings also do not work
name=['Data',char(i),'.bin'];
Using the following also gives an error for generating code that LHS is fixed sized but RHS is varying:
coder.varsize('name',[1,14],[0,0])

Respuesta aceptada

Walter Roberson
Walter Roberson el 7 de Mzo. de 2019
Editada: Walter Roberson el 7 de Mzo. de 2019
If you know that it is a single digit then do not use that technique. Instead you can use
name = ['Data', char(i+'0'), '.bin']
Or if you really need to
name = 'DataX.bin';
name(5) = char(i+48);
  1 comentario
amin ya
amin ya el 8 de Mzo. de 2019
Editada: amin ya el 8 de Mzo. de 2019
Thank you. Your code works very well with one digit.
I just tested the following again. It works good also and can be used for more digits, and it does not use var size stuff.
name=['Data',int2str(i),'.bin'];

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre MATLAB Coder en Help Center y File Exchange.

Productos


Versión

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by