2015-06-26 31 views
2

我有用Matlab在单元格中划分矩阵?

1)在尺寸为mx1,例如,尺寸为mx1的矢量Am=10

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

2)尺寸nx1,例如向量Bn=2

B=[2; 1] 

3)尺寸nx1,例如向量C

C=[3; 4] 

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

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

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

从你的两个参数B的C,你需要获得每个单元的尺寸,例如你d = [3,3,4]。这是长度解码,并在这里回答了多个问题。如果你有D,使用mat2cell来分割A. – Daniel

回答

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