Fill new row of cell array after delimiter

2 次查看(过去 30 天)
My cell array (1 X 11) is as follows:
a = {'A','B','C',';','D','E','F',';','1','2','3'}
Each character
I want a matlab program to recognize ';'(semicolon) as delimiter and whatever follows it comes to next row.
Desired output is a cell array of order 3 X 3
{ 'A','B','C'
'D','E','F'
'1','2','3' }

采纳的回答

Jan
Jan 2013-4-17
a = {'A','B','C',';','D','E','F',';','1','2','3'};
sep = find(strcmp(a, ';'));
b = a;
b(sep) = [];
b = transpose(reshape(b, sep(1) - 1), []);
  2 个评论
Priya
Priya 2013-4-17
Hi Jan
It worked perfectly..
b = transpose(reshape(b, sep(1) - 1), [ ]);
But I did not understand the last line syntax. What does [ ] denotes ?
Jan
Jan 2013-4-17
It is a typo. The parenthesis must move:
b = transpose(reshape(b, sep(1) - 1, []));
Then RESHAPE changes the shape such, that the result has sep(1)-1 rows and the number of columns is determined automatically by the number of elements.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Numeric Types 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by