Hi I'm trying to convert some data in an array : tab = [1 2 3 4 5; 1 10 11 100 101];
into something like this :
tab = {1 2 3 4 5 ; '001' '010' '011' '100' '101'};
I think I've got almost everything figure out except how I can transform my array from : tab = [1 2 3 4 5; 1 10 11 100 101]; to : tab = {1 2 3 4 5; 1 10 11 100 101};

 採用された回答

Jan
Jan 2017 年 3 月 7 日
編集済み: Jan 2017 年 3 月 7 日

0 投票

To get from tab = [1 2 3 4 5; 1 10 11 100 101]; to : tab = {1 2 3 4 5; 1 10 11 100 101} :
tab = [1 2 3 4 5; 1 10 11 100 101];
tabc = num2cell(tab);
But the more complicated problem is the conversion to strings of the 2nd row. With the undocumented sprintfc command:
tab = [1 2 3 4 5; 1 10 11 100 101];
tabc = cat(1, num2cell(tab(1, :)), sprintfc('%03d', tab(2, :)))
sprintfc exists for many years now, but it is not mentioned in the docs, such that it might be removed in the future. To be bullet-proof, use a loop:
len = size(tab, 2);
cstr = cell(1, len);
for k = 1:len
cstr{k} = sprintf('%03d', tab(2, k));
end
tabc = cat(1, num2cell(tab(1, :)), cstr);

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File Exchange で MATLAB についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by