Matlab编码器num2str不受支持

时间:2014-08-27 12:29:41

标签: c++ matlab

我正在尝试使用Matlab编码器将Matlab项目转换为C ++。我在代码中使用num2str函数的地方很少。但是当尝试使用Matlab编码器构建项目时,我得到以下错误。

  

“独立代码生成不支持函数'num2str'。”

我在需要为结构创建字段标识符的情况下使用了此函数。

例如:

for i=1:numel(bvec)
      fId = ['L', num2str(i)];
      tmp = mystruct.(fId);  
      % do some work here  
end

我可以替换函数num2str以便能够转换项目吗?

2 个答案:

答案 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;
}