Arrange and merge cell data

4 ビュー (過去 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 ExchangeResizing and Reshaping Matrices についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by