MATLAB中数组元素的重复

5

我有一个MATLAB数组,想根据数组元素的数量进行重复。下面是我想要的示例。

a = [2, 4, 6, 8]

如果我想要7个元素,结果就是:
aa = [2, 4, 6, 8, 2, 4, 6]

如果我想要5个元素,可以这样做:
aa = [2, 4, 6, 8, 2]

有没有MATLAB函数可以生成这种结果?

看一下 repmat 函数。我不确定,但它可能会对你有所帮助。 :) - Vuks
@V.L. 感谢评论!我刚刚检查了repmat,但似乎只有整数次重复可用。 - Edward M.
2个回答

6
您可以使用“模块化索引”:
a = [2, 4, 6, 8]; % data vector
n = 7; % desired number of elements
aa = a(mod(0:n-1, numel(a))+1);

3

一个简单的选项是使用临时变量:

a = [2 4 6 8];
k = 7;
tmp = repmat(a,1,ceil(k/numel(a)));
aa = tmp(1:k)

首先,您可以使用使结果大于k的最小整数重复向量,然后删除多余的元素。

如果您这样做很多次,可以编写一个小助手函数来完成此操作:

function out = semi_repmat(arr,k)
tmp = repmat(arr,1,ceil(k/numel(arr)));
out = tmp(1:k);
end

1
是的。根据您的评论,我使用最小整数(使用floor函数)重复向量并减小大小。感谢您的评论! - Edward M.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接