我不确定一种更简单的方法来增加一系列数字,以用作索引来提取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]
。
答案 0 :(得分:1)
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;