Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 从阵列中提取等距子阵列_Arrays_Matlab - Fatal编程技术网

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)