0

是这样的:

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++ 必须是静态大小,我认为以上是不可能的,或者有解决方法吗?

4

1 回答 1

1

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

if strcmp(m, 'xyz')
  rv = 1;
elseif strcmp(m, 'xyz1')
  rv = 2;
else
  error('unexpected');
end
于 2012-11-28T18:18:23.333 回答