matlab编码器 - 'char switch'功能

时间:2012-11-28 17:04:50

标签: matlab octave

是这样的:

function [rv] = get_bla(m)
%#codegen
assert(isa(m,'char'));
assert(size(m, 1) >= 1);
assert(size(m, 1) <= 1024);

switch m
    case 'xyz' 
        rv = 1;
    case 'xyz1'   
        rv = 2; 
    otherwise
        error('Unexpected something');
end 

实际上可以在matlab编码器的上下文中使用吗?

我正在使用:

codegen -config:dll get_bla

并获得:

SWITCH表达式具有不确定的大小。

由于'char数组'必须是C / C ++的静态大小,我认为上面的内容是不可能的,还是有解决方法?

1 个答案:

答案 0 :(得分:1)

尝试使用if - elseif语句而不是switch语句。

if strcmp(m, 'xyz')
  rv = 1;
elseif strcmp(m, 'xyz1')
  rv = 2;
else
  error('unexpected');
end