concatenate cell

4 vues (au cours des 30 derniers jours)
Alexandros
Alexandros le 20 Déc 2011
i have a cell (symbol {} on the variable list) with a=('kkk', 'lll', 'xxx', 'jjj.xls')
and i want to concatenate a so that i can have
b = ('kkk_lll_xxx_jjj.xls')
thank you
  2 commentaires
Alexandros
Alexandros le 20 Déc 2011
They are not with , (commas separated) they are separated with ; so they are one under the other. but i want one string at the end
Alexandros
Alexandros le 20 Déc 2011
I don't want to separate a because it can be of infinite dimensions. i need to concatenate as much as information i have in the initial cell

Connectez-vous pour commenter.

Réponse acceptée

Andrei Bobrov
Andrei Bobrov le 20 Déc 2011
a={'kkk', 'lll', 'xxx', 'jjj.xls'}';
out = [a(:)';repmat({'_'},1,numel(a))];
out = [out{:}];
out = out(1:end-1);
variant 2
out = cell(1,2*numel(a)-1);
out(1:2:end) = a;
out(2:2:end) = {'_'};
out = [out{:}];
  1 commentaire
Alexandros
Alexandros le 20 Déc 2011
This is perfect but it puts me a '_' also at the end which i dont need
maybe i could delete it with taking only out(1:end-1)?

Connectez-vous pour commenter.

Plus de réponses (4)

Jan
Jan le 20 Déc 2011
a = {'kkk'; 'lll'; 'xxx'; 'jjj.xls'}
out = sprintf('%s_', a{:});
out(end) = [];
or:
out = [sprintf('%s_', a{1:end-1}), a{end}];
or:
out = sprintf([repmat('%s_', 1, numel(a)-1), '%s'], a{:});
For very large cell strings, this becomes slow because Matlab forgets to pre-allocate the output properly. Therefore I've written the C-mex function CStr2String:
out = CStr2String(a, '_', 'noTrial')
  1 commentaire
Andrei Bobrov
Andrei Bobrov le 20 Déc 2011
Hi Jan! +1.

Connectez-vous pour commenter.


Alexandros
Alexandros le 20 Déc 2011
This is perfect but it puts me a '_' also at the end which i dont need
maybe i could delete it with taking only out(1:end-1)?

Alexandros
Alexandros le 20 Déc 2011
This is very helpul guys
Thank you

Eric Tao
Eric Tao le 3 Fév 2018
just type:
b = {strjoin(a,'_')};
Then your b will be a cell as
{'kkk_lll_xxx_jjj.xls'}

Catégories

En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by