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

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