2017-11-28 2 views
5

MATLAB 배열이 있고 배열 요소의 수를 기반으로 반복을 만들고 싶습니다. 다음은 내가 원하는 예입니다.MATLAB 배열 요소 반복

a = [2, 4, 6, 8] 

나는 7 개 요소를 원하는 경우, 결과는

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

입니다 아니면 5 개 요소를 원하는 경우

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

은 결과의 이러한 종류를 만드는 어떤 MATLAB 기능이 있습니까?

+0

는 [repmat]를 살펴 보자를 (https://ch.mathworks.com/help/matlab/ref/repmat.html) 기능. 나는 잘 모르지만 그것은 당신을 도울 수 있습니다. :) –

+0

@ V.L. 코멘트 주셔서 감사합니다! 방금 repmat를 확인했지만 반복의 정수 시간 만 사용할 수있는 것처럼 보입니다. –

답변

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

예. 귀하의 의견으로, 나는 (바닥 함수와) 가장 작은 정수를 사용하여 벡터를 반복하고 크기를 줄일 수 있습니다. 코멘트 주셔서 감사합니다! –

6

당신은 "모듈 색인"을 사용할 수 있습니다

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