Convert a matrix to { }

9 ビュー (過去 30 日間)
Martin Park
Martin Park 2013 年 10 月 6 日
編集済み: Andrei Bobrov 2013 年 10 月 7 日
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'}.

回答 (3 件)

Jan
Jan 2013 年 10 月 6 日
編集済み: Jan 2013 年 10 月 6 日
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 2013 年 10 月 6 日
Or:
symbols = [0 1 2; 3 4 5; 6 7 8];
C = num2cell(char('0' + symbols.'))
  1 件のコメント
Jan
Jan 2013 年 10 月 6 日
This fails when any element of the input is outside [0, 9].

サインインしてコメントする。


Andrei Bobrov
Andrei Bobrov 2013 年 10 月 6 日
編集済み: Andrei Bobrov 2013 年 10 月 7 日
A = [0 1 2
3 4 5
6 7 8];
cellstr(sprintf('%d',A')')'
other variant:
regexp(num2str(reshape(A.',1,[])),'\d*','match')
  2 件のコメント
Jan
Jan 2013 年 10 月 6 日
編集済み: Jan 2013 年 10 月 6 日
This fails when any element of the input is outside [0, 9].
Andrei Bobrov
Andrei Bobrov 2013 年 10 月 7 日
編集済み: Andrei Bobrov 2013 年 10 月 7 日
Hi Jan, I agree with you and I suggest another option.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeSymbolic Math Toolbox についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by