2012-11-28 39 views
0

是這樣的:MATLAB編碼器 - 與「字符切換」功能

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表達具有不確定的大小。

作爲「字符數組」必須是靜態的尺寸爲C/C++,我相信上述是不可能的或者是有一個變通?

+0

嘗試'if' -' else if'語句而不是'switch' – Praetorian

+1

此刻實際嘗試此操作。謝謝。猜猜我必須使用strcmpi ...? – cs0815

+0

「材料」從哪裏來?如果材料是一個字符串,它應該工作(至少在八度)。但是,如果你想要做一個區分大小寫的比較,使用'開關tolower的(材料)' – carandraug

回答

1

嘗試使用if - elseif而不是switch語句。

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