group every ten cell array
5 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
pasta pontikaki
am 18 Mai 2019
Bearbeitet: pasta pontikaki
am 20 Mai 2019
Hi all i have a cell array 1x180 and i want to group by every 10 cells
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 Kommentare
Akzeptierte Antwort
Adam Danz
am 18 Mai 2019
Bearbeitet: Adam Danz
am 18 Mai 2019
c = cell(1,180); % the original 1x180 cell array
newCell = mat2cell(c,1,repmat(10,1,18)); %the new nested cell array
5 Kommentare
Adam Danz
am 19 Mai 2019
Bearbeitet: Adam Danz
am 19 Mai 2019
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
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!