stringmatlabcharprintfmatlab-coder

MALAB Coder - Static size string in sprintf


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])

Solution

  • I just tested the following again. It works well and also can be used for more digits, and it does not use var size stuff.

    name=['Data',int2str(i),'.bin'];
    

    Also, these can be used if we are sure that i is one digit:

    ['Data' char(48+i) '.bin']
    ['Data' char('0'+i) '.bin']