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

3 ビュー (過去 30 日間)
ErikaZ
ErikaZ 2016 年 11 月 16 日
編集済み: Jan 2016 年 11 月 21 日
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

回答 (1 件)

Jan
Jan 2016 年 11 月 16 日
編集済み: Jan 2016 年 11 月 21 日
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 件のコメント
ErikaZ
ErikaZ 2016 年 11 月 16 日
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 2016 年 11 月 16 日
Possibly a cleaner version of the above:
D = cellfun(@(c) num2cell(c, 2), C, 'UniformOutput', false);
Result = vertcat(D{:});

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

カテゴリ

Help Center および File ExchangeData Type Conversion についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by