Arrange and merge cell data

1 回表示 (過去 30 日間)
Isma_gp
Isma_gp 2016 年 9 月 14 日
コメント済み: Walter Roberson 2016 年 9 月 16 日
Hi,
I have a 3x3 cell as follows: [[1x40], [1x40], [1x40] ; [1x30], [1x30] ,[1x30] ; [1x50], [1x50] ,[1x50] ]
I would like to arrange the data, so that the final result is a 1x3 cell: [[3x40];[3x30];[3x50]]
I would like to do this without calling each cell specifically (in reality this is for a 20x20 cell)
Thanks

採用された回答

Walter Roberson
Walter Roberson 2016 年 9 月 14 日
arrayfun(@(col) vertcat(YourCell{:,col}), 1:size(YourCell,2), 'Uniform', 0)
  2 件のコメント
Isma_gp
Isma_gp 2016 年 9 月 16 日
Hey, Thanks for your answer. The vertical concatenation is not working because the dimension of the cells in each row is different i.e. 30,40 and 50
Walter Roberson
Walter Roberson 2016 年 9 月 16 日
arrayfun(@(row) vertcat(YourCell{row,:}), (1:size(YourCell,1)).', 'Uniform', 0)

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

その他の回答 (1 件)

Stephen23
Stephen23 2016 年 9 月 16 日
編集済み: Stephen23 2016 年 9 月 16 日
C = {...
rand(1,40),rand(1,40),rand(1,40);...
rand(1,30),rand(1,30),rand(1,30);...
rand(1,50),rand(1,50),rand(1,50)};
%
D = cellfun(@(c)vertcat(c{:}),num2cell(C,2),'UniformOutput',false);
and tested:
>> size(D{1})
ans =
3 40
>> size(D{2})
ans =
3 30
>> size(D{3})
ans =
3 50

カテゴリ

Help Center および File ExchangeMultidimensional Arrays についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by