Convert a matrix to { }

9 vues (au cours des 30 derniers jours)
Martin Park
Martin Park le 6 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'}.

Réponses (3)

Jan
Jan le 6 Oct 2013
Modifié(e) : Jan le 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 le 6 Oct 2013
Or:
symbols = [0 1 2; 3 4 5; 6 7 8];
C = num2cell(char('0' + symbols.'))
  1 commentaire
Jan
Jan le 6 Oct 2013
This fails when any element of the input is outside [0, 9].

Connectez-vous pour commenter.


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

Connectez-vous pour commenter.

Catégories

En savoir plus sur Symbolic Math Toolbox dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by