Convert a matrix to { }

5 views (last 30 days)
Martin Park
Martin Park on 6 Oct 2013
Edited: 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'}.

Answers (3)

Jan
Jan on 6 Oct 2013
Edited: Jan 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.

Jan
Jan on 6 Oct 2013
Or:
symbols = [0 1 2; 3 4 5; 6 7 8];
C = num2cell(char('0' + symbols.'))
  1 Comment
Jan
Jan on 6 Oct 2013
This fails when any element of the input is outside [0, 9].

Sign in to comment.


Andrei Bobrov
Andrei Bobrov on 6 Oct 2013
Edited: 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
Jan on 6 Oct 2013
Edited: Jan on 6 Oct 2013
This fails when any element of the input is outside [0, 9].
Andrei Bobrov
Andrei Bobrov on 7 Oct 2013
Edited: Andrei Bobrov on 7 Oct 2013
Hi Jan, I agree with you and I suggest another option.

Sign in to comment.

Categories

Find more on Symbolic Math Toolbox in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!