MATLAB Answers


Fill new row of cell array after delimiter

Asked by Priya
on 17 Apr 2013

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'


'1','2','3' }



No products are associated with this question.

1 Answer

Answer by Jan Simon
on 17 Apr 2013
 Accepted answer

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), []);


on 17 Apr 2013

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 Simon
on 17 Apr 2013

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.

Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

MATLAB Academy

New to MATLAB?

Learn MATLAB today!