group every ten cell array
4 ビュー (過去 30 日間)
古いコメントを表示
Hi all i have a cell array 1x180 and i want to group by every 10 cells
![conc.PNG](https://www.mathworks.com/matlabcentral/answers/uploaded_files/220160/conc.png)
For example i want the elements from 1 cell till 10 get grouped,11:21, 22:32 etc..
So the new cell should be 1x18
How can i do this?
0 件のコメント
採用された回答
Adam Danz
2019 年 5 月 18 日
編集済み: Adam Danz
2019 年 5 月 18 日
c = cell(1,180); % the original 1x180 cell array
newCell = mat2cell(c,1,repmat(10,1,18)); %the new nested cell array
5 件のコメント
Adam Danz
2019 年 5 月 19 日
編集済み: Adam Danz
2019 年 5 月 19 日
Yeah, you can still concatenate them vertically but you'd need to pad the shorter vectors. Here are both methods:
Concatenate horizontally
newCellMerge = cellfun(@(x)[x{:}],newCell, 'UniformOutput', false);
Concatenate vertically, pad with NaN values at the end of short vectors
newCellMerge = cell(size(newCell));
for i = 1:length(newCell)
len = cellfun(@length, newCell{i});
cellPad = cellfun(@(x,y)padarray(x',y,NaN,'post')',newCell{i}, num2cell(max(len)-len),'UniformOutput',false)';
newCellMerge{i} = cell2mat(cellPad);
end
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Creating and Concatenating Matrices についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!