Matlab Coder - strcat函数的替代方案

时间:2014-04-11 18:56:33

标签: string matlab matlab-coder codegen

目前,matlab编码器不支持strcatstrjoin。有没有办法绕过这个或自定义函数?

编辑: 输入= [a b c d] 预期输出='a,b,c,d'

1 个答案:

答案 0 :(得分:4)

对于strjoin,您可能会使用sprintf

>> colorCell = [{'Red','Yellow'},{'Green','Blue'}];
>> colorList = strjoin(colorCell,',')
colorList =
Red,Yellow,Green,Blue
>> colorList = sprintf('%s,',colorCell{:}); colorList(end)=[]
colorList =
Red,Yellow,Green,Blue

如果您无法使用spintf

>> c = [colorCell(:) repmat({','},numel(colorCell),1)].';
>> colorList = [c{:}]; colorList(end)=[]

对于strcat,简单用法通常等同于使用[]

>> strcat(colorCell{:})
ans =
RedYellowGreenBlue
>> [colorCell{:}]
ans =
RedYellowGreenBlue

但是,对于更复杂的语法,它并不那么简单:

>> strcat({'Red','Yellow'},{'Green','Blue'})
ans = 
    'RedGreen'    'YellowBlue'

您是否需要针对此用途的解决方案?也许如下:

colorCell1 = {'Red','Yellow'}; colorCell2 = {'Green','Blue'};
colorCell12 = [colorCell1;colorCell2];
c = mat2cell(colorCell12,size(colorCell12,1),ones(size(colorCell12,2),1));
cellfun(@(x)[x{:}],c,'uni',0)