我有
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)
。应创建子单元格,B
和C
:B(i)
和C(i)
告诉我们必须采用B(i)
C(i)
组每个A
的元素。在示例中,
C={{1 2 3} {4 5 6} {7 8 9 10}}
答案 0 :(得分:2)
您可以使用arrayfun
和repmat
组合来完成此操作。尽管如此,可能有一种更有效的方法。
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