在MATLAB中重复数组元素

Edw*_* M. 5 arrays matlab repeat

我有一个MATLAB数组,并希望根据数组元素的数量进行重复.以下是我想要的例子.

a = [2, 4, 6, 8]
Run Code Online (Sandbox Code Playgroud)

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

aa = [2, 4, 6, 8, 2, 4, 6]
Run Code Online (Sandbox Code Playgroud)

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

aa = [2, 4, 6, 8, 2]
Run Code Online (Sandbox Code Playgroud)

是否有任何MATLAB函数可以产生这些结果?

Lui*_*ndo 6

您可以使用"模块化索引":

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


EBH*_*EBH 3

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

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

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

如果您多次这样做,您可以编写一个小辅助函数来执行此操作:

function out = semi_repmat(arr,k)
tmp = repmat(arr,1,ceil(k/numel(arr)));
out = tmp(1:k);
end
Run Code Online (Sandbox Code Playgroud)