在同一位置关联元素的智能方式

时间:2016-09-11 01:50:28

标签: matlab

假设我将三个矩阵组合成一个单元格(它们的大小都相同)

output{1} = [2 3
             4 5]

output{2} = [5 6
             2 9]

output{3} = [3 10
             2 4]

我想在同一位置创建另一个关联元素的单元格

celledoutput{1} = [2 5 3]
celledoutput{2} = [4 2 2]
celledoutput{3} = [3 6 10]
celledoutput{4} = [5 9 4]

当然,我可以使用很多for循环来做到这一点。只需循环大小(输出{1},1)和大小(输出{1},2)并逐渐建立celledoutput。

但有没有聪明的方法呢?

1 个答案:

答案 0 :(得分:1)

使用cell2matmat2cell以及一些谨慎的重塑是一种方式:

n = numel(output{1});
m = numel(output);

mat2cell(reshape(cell2mat(output(:).'),n,m),ones(n,1),m)

产量

ans{1} =
     2     5     3

ans{2} =
     4     2     2

ans{3} =
     3     6    10

ans{4} =
     5     9     4