Matlab Coder - альтернатива для функции strcat

В настоящее время Matlab кодер не поддерживает strcat или же strjoin, Есть ли какой-нибудь способ обойти эту или пользовательскую функцию?

Редактировать: Input= [a b c d] Ожидаемый результат = 'a,b,c,d'

1 ответ

За 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)
Другие вопросы по тегам