我正在尝试使用Matlab编码器将Matlab项目转换为C ++。我在代码中使用num2str
函数的地方很少。但是当尝试使用Matlab编码器构建项目时,我得到以下错误。
“独立代码生成不支持函数'num2str'。”
我在需要为结构创建字段标识符的情况下使用了此函数。
例如:
for i=1:numel(bvec)
fId = ['L', num2str(i)];
tmp = mystruct.(fId);
% do some work here
end
我可以替换函数num2str
以便能够转换项目吗?
答案 0 :(得分:3)
使用sprintf
会很简单,但我不确定您是否可以使用它?
fId = sprintf('L%d', i);
如果numel(bvec)
在0到9的范围内,您可以使用char
:
fId = ['L', char(48+i)];
或者您可以创建自己的数字到字符串转换功能。可能有更好的方法,但这是一个想法:
function s = convertnum(n)
if n > 9
s = [convertnum(floor(n/10)), char(48+mod(n,10))];
else
s = char(48+n);
end
end
然后像这样使用它:
fId = ['L', convertnum(i)];
修改强>
基于评论的替代转换功能:
function s = convertnum(n)
s = [];
while n > 0
d = mod(n,10);
s = [char(48+d), s];
n = (n-d)/10;
end
end
答案 1 :(得分:0)
可以使用C ++中的to_string编写与Matlab num2str
等效的函数。请参阅我的功能版本:
#include"stdafx.h"
#include <sstream>
#include <string.h>
using namespace std;
string num2str(int number)
{
string s;
s = to_string(number);
return s;
}