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

Convert a matrix to { }

Asked by Martin Park on 6 Oct 2013
Latest activity Edited by Andrei Bobrov on 7 Oct 2013

Can anyone help me to convert a matrix that is for instance:

 0 1 2
 3 4 5
 6 7 8

called symbols obtained from an image to something that is in the following form symbols= {'0' '1' '2' '3' '4' '5' '6' '7' '8'}.

0 Comments

Martin Park

Tags

Products

No products are associated with this question.

3 Answers

Answer by Jan Simon on 6 Oct 2013
Edited by Jan Simon on 6 Oct 2013
symbols = [0 1 2; ...
           3 4 5; ...
           6 7 8];
S = sprintf('%g*', symbols.');
S(end) = [];   % Remove trailing *
C = regexp(S, '*', 'split');

Another simpler method:

C = cell(1, numel(symbols));
symbols = symbols.';
for iC = 1:numel(symbols)
  C{iC} = sprintf('%g', symbols(iC));
end

I'm not convinced, that the conversion will really help to solve your problem.

0 Comments

Jan Simon
Answer by Jan Simon on 6 Oct 2013

Or:

symbols = [0 1 2;  3 4 5;  6 7 8];
C = num2cell(char('0' + symbols.'))

1 Comment

Jan Simon on 6 Oct 2013

This fails when any element of the input is outside [0, 9].

Jan Simon
Answer by Andrei Bobrov on 6 Oct 2013
Edited by Andrei Bobrov on 7 Oct 2013
A = [0 1 2
 3 4 5
 6 7 8];
cellstr(sprintf('%d',A')')'

other variant:

regexp(num2str(reshape(A.',1,[])),'\d*','match')

2 Comments

Jan Simon on 6 Oct 2013

This fails when any element of the input is outside [0, 9].

Andrei Bobrov on 7 Oct 2013

Hi Jan, I agree with you and I suggest another option.

Andrei Bobrov

Contact us