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

To resolve issues starting MATLAB on Mac OS X 10.10 (Yosemite) visit: http://www.mathworks.com/matlabcentral/answers/159016

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'

'D','E','F'

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

0 Comments

Priya

Products

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

2 Comments

Priya 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.

Jan Simon

Contact us