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 件のコメント

Alexandros
Alexandros 2011 年 12 月 20 日
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 2011 年 12 月 20 日
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

サインインしてコメントする。

 採用された回答

Andrei Bobrov
Andrei Bobrov 2011 年 12 月 20 日

0 投票

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 件のコメント

Alexandros
Alexandros 2011 年 12 月 20 日
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)?

サインインしてコメントする。

その他の回答 (4 件)

Jan
Jan 2011 年 12 月 20 日

1 投票

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 件のコメント

Andrei Bobrov
Andrei Bobrov 2011 年 12 月 20 日
Hi Jan! +1.

サインインしてコメントする。

Alexandros
Alexandros 2011 年 12 月 20 日

0 投票

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 2011 年 12 月 20 日

0 投票

This is very helpul guys
Thank you
Eric Tao
Eric Tao 2018 年 2 月 3 日

0 投票

just type:
b = {strjoin(a,'_')};
Then your b will be a cell as
{'kkk_lll_xxx_jjj.xls'}

カテゴリ

ヘルプ センター および File ExchangeCreating and Concatenating Matrices についてさらに検索

タグ

質問済み:

2011 年 12 月 20 日

回答済み:

2018 年 2 月 3 日

Community Treasure Hunt

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

Start Hunting!

Translated by