增量MATLAB范围

时间:2014-09-03 16:31:19

标签: matlab indexing range increment

我不确定一种更简单的方法来增加一系列数字,以用作索引来提取12个数字序列中的一系列数字中的特定范围。例如,我需要一个索引来执行以下操作:

Array1是一个包含1列乘612列的数组。我需要创建一个索引,以便我提取值8,9,10,11和12,然后将它们递增12,以便我提取的下一列是20,21,22,23和24等等到c olumn == 612

我的索引将如下所示:

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

等到612。

我尝试使用index = [ 8:12:12:612]之类的内容,但它只是给了我[ 8 20 32, etc]

2 个答案:

答案 0 :(得分:1)

基于{p> bsxfun的方法 -

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

答案 1 :(得分: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;