在Matlab中划分单元格中的矩阵?

时间:2015-06-26 19:23:42

标签: matlab

我有

1)维度A的Matlab中的向量mx1,例如m=10

A=[1;2;3;4;5;6;7;8;9;10]

2)维度B的向量nx1,例如n=2

B=[2; 1]

3)维C的向量nx1,例如

C=[3; 4]

i C(i)*B(i)的总和应该等于m。在示例3*2+4*1=10中。

我想生成由C个子单元格组成的维度1xsum(B,1)的单元格sum(B,1)。应创建子单元格,BCB(i)C(i)告诉我们必须采用B(i) C(i)组每个A的元素。在示例中,

C={{1 2 3} {4 5 6} {7 8 9 10}}

1 个答案:

答案 0 :(得分:2)

您可以使用arrayfunrepmat组合来完成此操作。尽管如此,可能有一种更有效的方法。

A=[1;2;3;4;5;6;7;8;9;10] ;
B=[2; 1] ;
C=[3; 4];
q = arrayfun(@(x, y) repmat(x(:), 1, y), C, B, 'uni', 0);
Ap = mat2cell(A(:), [q{:}]);
Ap{:}

输出

ans =

     1
     2
     3


ans =

     4
     5
     6


ans =

     7
     8
     9
    10