Dim*_*ima 18 arrays matlab repeat run-length-encoding elementwise-operations
假设我有一维数组:
a = [1, 2, 3];
例如,n应该返回replicate(a, 3).
请注意,这与...完全不同[1,1,1,2,2,2,3,3,3].我当然可以repmat通过replicate对每个元素进行实现并连接结果来实现,但我想知道是否有更高效的内置函数.
gno*_*ice 21
我是KRON功能的粉丝:
>> a = 1:3;
>> N = 3;
>> b = kron(a,ones(1,N))
b =
    1     1     1     2     2     2     3     3     3
您还可以查看此相关问题(处理复制二维矩阵的元素)以查看涉及矩阵索引的其他一些解决方案.这是一个这样的解决方案(灵感来自Edric的答案):
>> b = a(ceil((1:N*numel(a))/N))
b =
    1     1     1     2     2     2     3     3     3
Amr*_*mro 20
a = [1 2 3];
N = 3;
b = reshape(repmat(a,N,1), 1, [])
cha*_*pjc 13
从R2015a开始,有一个内置和记录的功能来执行此操作repelem:
repelem复制数组的元素.
W = repelem(V,N),使用向量V和标量N,创建一个向量W,其中每个元素V重复N一次.
第二个参数也可以是一个长度相同的向量,V以指定每个元素的复制数.对于2D复制:
B = repelem(A,N1,N2)
不再需要kron或其他技巧了!
更新:要与其他快速方法进行性能比较,请参阅数组元素的Q&A 重复副本:MATLAB中的行程解码.
| 归档时间: | 
 | 
| 查看次数: | 12351 次 | 
| 最近记录: |