splitting large cell array into smaller cell arrays

13 ビュー (過去 30 日間)
Aditya
Aditya 2015 年 4 月 27 日
コメント済み: Aditya 2015 年 4 月 27 日
hi
I have a large cell array "a" (5290*1) such that each element of the array is of size e.g. size(a{1,1}) = 21*204
i want to split these further such that each element of a{1,1} contains another cell array such that size of a{1,1}.b1 = 3*204 and i have a{1,1}.b1, a{1,1}.b2.... a{1,1}.b7 so a{1,1} contains 7 cells of size 3*204. how can i achieve this without for loop?
Many thanks for you help.

採用された回答

Michael Haderlein
Michael Haderlein 2015 年 4 月 27 日
If you really want to have the inside to be a struct, you can go with
c=cellfun(@(x) cell2struct(mat2cell(x,3*ones(7,1),204),{'b1','b2','b3','b4','b5','b6','b7'}),a,'uniform',false);
For sure, the {'b1'...'b7'} can be done nicer (ask if you need help with that).
Anyway, most likely it's better to keep the internal to be cells, then the upper code simplifies to
c=cellfun(@(x) mat2cell(x,3*ones(7,1),204),a,'uniform',false);

その他の回答 (1 件)

Guillaume
Guillaume 2015 年 4 月 27 日
Use mat2cell to split your matrices into cells. This assumes that all matrices are the same size:
newa = cellfun(@(m) mat2cell(m, 3*one(1, 7), 204), a, 'UniformOutput', false)

カテゴリ

Help Center および File ExchangeStructures についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by