2017-04-02 69 views
0

任何人都可以指导我如何使用MATLAB代码从一维矢量中选择几个连续项(例如3)每个第n个元素?我怎样才能连续三个条款中的每一个条款?

例如,如果我的数组是array = [1 2 3 4 5 6 7 8 9 10 11 12]; 我想连续三次跳过四次,所以解决方法是array_solution = [1 2 3 8 9 10];

非常感谢。

+0

那不是我想要的,我编辑的问题,所以现在我认为这是更好地解释我的意思 – JuanF

+0

得到它。看看我的回答 – user2999345

回答

0

使用bsxfun添加两个索引向量(列和行):

x = [1 2 3 4 5 6 7 8 9 10 11 12]; 
len = length(x); % total array length 
c = 3; % number of consecutive elements 
n = 4; % every nth element 
idxs = bsxfun(@plus,(1:c)',0:(c+n):len); 
y = x(idxs(:)) 

    y = 

    [1  2  3  8  9 10] 
+0

是的,非常感谢,这正是我需要的:) – JuanF

0

如果你不想使用bsxfun(或功能一般要求),由于某种原因,这里是另一种方式来获得每个n元素连续元素c

x = 1:12; 
c = 3; 
n = 4; 
% One of the two ranges in the indexing expression must be transposed 
% so that MATLAB will apply vector expansion 
y = x((0:n+c:end-c) + (1:c)') 

    y = 
     1 2 3 
     8 9 10 

您还可以,如果你想要得到的结果是一个1 X m矢量使用下一个片段。

idxs = (0:n+c:end-c) + (1:c)'; 
y = x(idxs(:))