Matlab:向量中的重复元素块

f380塞德里克

我想重复向量的元素,但考虑元素块(不使用任何循环)。

例如,考虑一个大小为 2 的块,我有一个像这样的向量a = [1:6],我希望输出看起来像这样out = [1 2 1 2 3 4 3 4 5 6 5 6]

苏弗

您可以reshape输入,然后根据需要使用repmat

blksize = 2;

tmp = repmat(reshape(a, blksize, 1, []), 1, blksize, 1);

output = tmp(:).';

解释

首先,我们要将矩阵重塑为blksize x 1 x (numel(a)/blksize)矩阵。

A = reshape(a, blksize, 1, []);

然后我们想A blksize沿着第二个维度重复次数以创建必要的重复次数。

B = repmat(A, 1, blksize, 1);

然后我们将整个事物展平成一个数组,由于列优先排序,我们得到了所需的输出

output = B(:).'

可选单衬

如果你真的想要一条线,你可以reshape再次使用而不是(:).'

output = reshape(repmat(reshape(a, blksize, 1, []), 1, blksize, 1), 1, []);

选择

您还可以使用 MATLABrepelem来完成重复

result = reshape(repelem(reshape(a, blksize, 1, []), 1, blksize, 1), 1, [])

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章