Ric*_*ard 5 arrays matlab matrix
有没有人知道是否有办法从1D数组生成2D数组,其中2D中的行是通过重复1D数组中的相应元素生成的.
即:
1D array 2D array
|1| |1 1 1 1 1|
|2| |2 2 2 2 2|
|3| -> |3 3 3 3 3|
|4| |4 4 4 4 4|
|5| |5 5 5 5 5|
Run Code Online (Sandbox Code Playgroud)
本着奖金答案的精神,这里有一些我自己的:
让 A = (1:5)'
使用索引[比repmat更快]:
B = A(:, ones(5,1))
Run Code Online (Sandbox Code Playgroud)使用矩阵外产品:
B = A*ones(1,5)
Run Code Online (Sandbox Code Playgroud)使用bsxfun()[不是最好的方法]
B = bsxfun(@plus, A, zeros(1,5))
%# or
B = bsxfun(@times, A, ones(1,5))
Run Code Online (Sandbox Code Playgroud)您可以使用REPMAT函数执行此操作:
>> A = (1:5).'
A =
1
2
3
4
5
>> B = repmat(A,1,5)
B =
1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4
5 5 5 5 5
Run Code Online (Sandbox Code Playgroud)
编辑:奖励答案!;)
例如,REPMAT是最直接的功能.但是,要注意的另一个很酷的功能是KRON,您也可以通过以下方式将其用作解决方案:
B = kron(A,ones(1,5));
Run Code Online (Sandbox Code Playgroud)
对于小向量和矩阵,KRON可能稍微快一点,但对于较大的矩阵来说它要慢得多.