我有一个形式的矢量:
A = [a1 a2 a3 a4 ...];
我想创建另一个这样的矢量:
B = [a1 a1 a1 a2 a2 a2 a3 a3 a3 a4 a4 a4 ...];
我该怎么做?
答案 0 :(得分:2)
有很多方法可以做到这一点,例如使用Kronecker tensor product这样:
B = kron(A,ones(1,3))
B = reshape(repmat(A,3,1),1,[])
如果您不确定矢量是水平还是垂直,您可以使用(:)
和转置.'
,如下所示:
B = kron(A(:).', ones(1,3))
B = reshape(repmat(A(:).',3,1),1,[])
修改强>
你说重塑版本没有用。以下是我的测试结果:
A = 1:4
B = reshape(repmat(A(:).',3,1),1,[])
B =
1 1 1 2 2 2 3 3 3 4 4 4
A = (1:4)'
B = reshape(repmat(A(:).',3,1),1,[])
B =
1 1 1 2 2 2 3 3 3 4 4 4
因此,它适用于列和行向量(至少对我而言)。
更多方法:
%# vector-matrix product
reshape(ones(3,1)*A, 1,[])
%# reorganize simple concatenation
nA = 3*numel(A);
B([1:3:nA 2:3:nA 3:3:nA]) = [A A A];