MATLAB 中数组元素的重复

Repetition of array elements in MATLAB

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

a = [2, 4, 6, 8]

如果我要7个元素,结果是

aa = [2, 4, 6, 8, 2, 4, 6]

或者如果我想要 5 个元素,

aa = [2, 4, 6, 8, 2]

有没有MATLAB函数可以得到这样的结果?

一个简单的选择是为此使用一个临时变量:

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

您可以使用 "modular indexing":

a = [2, 4, 6, 8]; % data vector
n = 7; % desired number of elements
aa = a(mod(0:n-1, numel(a))+1);