Changing array type?

9 vues (au cours des 30 derniers jours)
Marc-Olivier Labrecque-Goulet
Modifié(e) : Jan le 7 Mar 2017
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};

Réponse acceptée

Jan
Jan le 7 Mar 2017
Modifié(e) : Jan le 7 Mar 2017
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);

Plus de réponses (0)

Catégories

En savoir plus sur Resizing and Reshaping Matrices dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by