Divide/spl​it/reshape​/convert a 1x6 cell array with different sizes cell arrays to a 19x1 cell array

3 visualizzazioni (ultimi 30 giorni)
Hi
I have a 1x6 cell that is:
Columns 1 through 6
[2x1195 double] [4x1195 double] [2x1195 double] [4x752 double] [4x694 double] [3x695 double]
and I need to convert it to a 19x1 cell that is:
[1x1195 double]
[1x1195 double]
[1x1195 double]
[1x1195 double]
[1x1195 double]
[1x1195 double]
[1x1195 double]
[1x1195 double]
[1x752 double]
[1x752 double]
[1x752 double]
[1x752 double]
[1x694 double]
[1x694 double]
[1x694 double]
[1x694 double]
[1x695 double]
[1x695 double]
[1x695 double]
Meaning each row of a "inner" cell becomes the row of the "outer" cell. The first two rows are the 2 rows of Column 1, and so on.
I have already tried the function reshape, cell2mat, mat2cell, cat, but I haven't been able to make it work.
Thank you

Risposte (1)

Jan
Jan il 16 Nov 2016
Modificato: Jan il 21 Nov 2016
C = ... % Your input
D = cell(size(C))
for k = 1:numel(C)
D{k} = num2cell(C{k}, 2); % [EDITED, {k} added]
end
Result = cat(1, D{:});
  3 Commenti
ErikaZ
ErikaZ il 16 Nov 2016
I got it to work as:
C = my cell;
D = cell(size(C));
for k = 1:numel(C)
D{1,k} = num2cell(C{k}, 2);
end
Result = cat(1, D{:});
Thanks
Guillaume
Guillaume il 16 Nov 2016
Possibly a cleaner version of the above:
D = cellfun(@(c) num2cell(c, 2), C, 'UniformOutput', false);
Result = vertcat(D{:});

Accedi per commentare.

Categorie

Scopri di più su Data Type Conversion in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by