Joining multiple 1xn cell arrays into mxn cell array

Hello I have a function that returns a containers.Map object with values as 1xn cell arrays. For example
map=containers.Map({'OBJECT', 'COLOR', 'WGT'},{{'obj1','obj2','obj3'},{'red','blue','green'},{1.2,2.54,8.12}});
The values in map are 3 1x3 cells.
>> map.values
ans =
{1x3 cell} {1x3 cell} {1x3 cell}
I would like to join the 3 1x3 cell data into 3x3 cell data like this
>> transpose([{'obj1','obj2','obj3'};{'red','blue','green'};{1.2,2.54,8.12}])
ans =
'obj1' 'red' [1.2000]
'obj2' 'blue' [2.5400]
'obj3' 'green' [8.1200]
How do I do this?
Thanks Bhaskar

 Akzeptierte Antwort

Star Strider
Star Strider am 3 Sep. 2015
One possibility:
v = map.values;
vc = [v{1}', v{2}', v{3}']
vc =
'red' 'obj1' [1.2000e+000]
'blue' 'obj2' [2.5400e+000]
'green' 'obj3' [8.1200e+000]

4 Kommentare

How do I make this dynamic. The size is not always 3. Can vc be made by a loop or some other construct?
This works:
vc = [];
for k1 = 1:size(v,2)
vc = [vc, v{k1}'];
end
That assumes they’re all the same length.
I was able to do this using your idea.
vc=cell(3,3);
keys=map.keys;
for i=1:3
vc(:,i)=map(keys{i});
end
Thank you
My pleasure.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Community Treasure Hunt

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

Start Hunting!

Translated by