2017-08-08 25 views
3

我有一個和我的previous one類似的問題。這一次的嵌套結構的形式如下:將嵌套的結構數組重新整形成具有不同大小元素的單元陣列

Sizes = [2, 5, 8, 6, 3]; 
cells = 5; 
for i = 1:cells 
    for j = 1:Sizes(i) 
     a(i).b.c(j).d = rand(1,1); 
    end 
    a(i).b.Size = Sizes(i); 
end 

我再次想將所有的a(:).b.c(:)d值到包含1 x cells電池的單cell array

下面是使用cellfun我的解決方案,但我想避免這樣的功能:

ab = [a.b]; 
abc = {ab.c}; 
abcd = cellfun(@(x) [x.d], abc, 'UniformOutput', false); 

使用以前的解決方案爲abc

abc = [ab.c]; 

創建與現場d一個1x24結構陣列。我想過使用Size字段將此結果重塑爲cell array,但我不知道如何或是否有可能。沒有使用循環和沒有cellfun,你有更好的方法嗎?

回答

2

你可以做到這一點使用mat2cell如下:

ab = [a.b]; 
abc = [ab.c]; 
abcd = mat2cell([abc.d], 1, [ab.Size]); 
相關問題