Arrays 从阵列中提取等距子阵列
我有一个数组:Arrays 从阵列中提取等距子阵列,arrays,matlab,Arrays,Matlab,我有一个数组: v = [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20]; 我想从v的第五个元素开始,提取长度为3、间距为6个元素的多个数组,然后将它们组合在一起: v1 = [5 6 7]; v2 = [11 12 13]; v3 = [17 18 19]; v_combined = [5 6 7 11 12 13 17 18 19]; 有没有不使用for循环的简单方法可以做到这一点?您可以使用逻辑索引。您需要像这样创建一个索引掩码
v = [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20];
我想从v
的第五个元素开始,提取长度为3、间距为6个元素的多个数组,然后将它们组合在一起:
v1 = [5 6 7];
v2 = [11 12 13];
v3 = [17 18 19];
v_combined = [5 6 7 11 12 13 17 18 19];
有没有不使用for循环的简单方法可以做到这一点?您可以使用逻辑索引。您需要像这样创建一个索引掩码
idx = [0 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0]
您可以这样创建:
idx = false(size(v))
k = 5
idx(k:end) = ~mod(floor((0:numel(v)-k)/3),2)
最后
v_combined = v(idx)
您可以使用逻辑索引来完成。您需要像这样创建一个索引掩码
idx = [0 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0]
您可以这样创建:
idx = false(size(v))
k = 5
idx(k:end) = ~mod(floor((0:numel(v)-k)/3),2)
最后
v_combined = v(idx)
通常,对于
m
元素,可以使用从k
开始的n
元素的空格
k=5;
m=3;
n=6;
I=1:numel(v);
v_combined = v((I>=k) & mod(I-k,n)<m)
k=5;
m=3;
n=6;
I=1:numel(v);
v_combined=v((I>=k)和mod(I-k,n)通常用于m
元素空间,由n
元素从k
开始,您可以使用
k=5;
m=3;
n=6;
I=1:numel(v);
v_combined = v((I>=k) & mod(I-k,n)<m)
k=5;
m=3;
n=6;
I=1:numel(v);
v_组合=v(I>=k)和mod(I-k,n)