Coder - Static size string in sprintf

11 ビュー (過去 30 日間)
amin ya
amin ya 2019 年 3 月 7 日
編集済み: amin ya 2019 年 3 月 8 日
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])

採用された回答

Walter Roberson
Walter Roberson 2019 年 3 月 7 日
編集済み: Walter Roberson 2019 年 3 月 7 日
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 件のコメント
amin ya
amin ya 2019 年 3 月 8 日
編集済み: amin ya 2019 年 3 月 8 日
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'];

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeMATLAB Coder についてさらに検索

製品


リリース

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by