我有一个数组:
v = [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20];
我想从v
的第五个元素开始,从6个元素中提取多个长度为3的数组,然后将它们组合在一起:
v1 = [5 6 7];
v2 = [11 12 13];
v3 = [17 18 19];
v_combined = [5 6 7 11 12 13 17 18 19];
有没有简单的方法可以在不使用for循环的情况下执行此操作?
答案 0 :(得分:3)
您可以使用逻辑索引来完成。您需要创建一个像这样的索引掩码
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)
答案 1 :(得分:1)
一般情况下m
元素n
元素空间从k
开始,您可以使用
k=5;
m=3;
n=6;
I=1:numel(v);
v_combined = v((I>=k) & mod(I-k,n)<m)