2014-09-03 1 views
2

숫자 범위를 증가시켜 인덱스로 사용하여 일련의 숫자로 된 특정 범위를 12 자리 시퀀스로 추출하는 쉬운 방법이 확실치 않습니다. 예를 들어, 다음을 수행하기위한 색인이 필요합니다.증가 MATLAB 범위

Array1은 1 행 x 612 열의 배열입니다. 인덱스를 만들어서 값 8,9,10,11,12를 추출한 다음 12로 나누어서 다음 열을 추출하면 20, 21, 22, 23, 24 등으로 c로 계산해야합니다. .

index = [ 8 9 10 11 12 20 21 22 23 24 32 33 34 35 36 ] 

등 내가 index = [ 8:12:12:612] 같은 것을 사용하여 시도

(612)에 있지만, 그것은 단지 나에게 [ 8 20 32, etc]을 제공

답변

0

그런 다음 인덱스는 세대가 될 수

S = 12; %// major step (minor step is 1) 
G = 5; %// group size 
I = 8; %// initial value 
F = 612; %// ending value 

하자 이 단순한 mod 기반 접근 방식으로 수정 :

index = find(mod(0:F-1,S)<G)+I-1; 
1

bsxfun 기반의 접근 방식 - : olumn == 612

내 인덱스는 다음과 같이됩니다.

array1 = 8:12; %// Starting array 
sz = 12; %// Stepsize 

Ncols = floor((size(A,2)-array1(1))/sz)+1 %// No. of blocks of indices 
ind1 = bsxfun(@plus,array1.',[0:Ncols-1]*sz) %//' Indices in blocks 
index = ind1(ind1<=size(A,2)); %// Valid indices 

예 -

A = rand(1,23); %// Random input for demo 
array1 = 1:4; %// Starting array 
sz = 8; %// Stepsize 

출력 -

index = 
    1  2  3  4  9 10 11 12 17 18 19 20