Matlab Coder - strcat函数的替代方法

3

目前Matlab Coder不支持strcatstrjoin。是否有任何方法可以规避此问题或自定义函数?

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


1
[ and ] for strcat? - Divakar
可能相关:MATLAB Coder支持的字符串函数 - Ben Voigt
@chappjc,strjoin也可以将字符串连接起来,str = strjoin(C,delimiter) matlab ref - Joel
@Joel 我知道这个函数,但我想问具体细节。你代码中的分隔符是什么? - chappjc
1
对于strcat来说,它取决于输入。考虑strcat({'Red','Yellow'},{'Green','Blue'}),会得到'RedGreen' 'YellowBlue' - chappjc
显示剩余5条评论
1个回答

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)

你的解决方案允许在不使用 strjoin 的情况下连接字符串,但不幸的是编码器也不允许使用 sprintf - Joel
编码器不允许使用cellfun(至少在我可以测试的2015b版本中是这样),因此该选项也无效... - Wolfie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接