How do I create a vector of n consecutive numbers spaced at with an interval of m between each group, without using a for loop?

조회 수: 18 (최근 30일)
Is it possible to generate the following vector:
v=[1,2,3 ,6,7,8 ,11,12,13 ....]
without using a for loop? More generally, I would like to be able to generate groups of n consecutive numbers with an interval of m between each group (in the example n=3 and m=2).
Thank you in advance..

채택된 답변

Guillaume
Guillaume 2018년 6월 18일
편집: Guillaume 2018년 6월 18일
numconsecutive = 3; %let's use better names than n, m, etc.
groupspacing = 2;
numgroups = 5;
v = reshape((1:numconsecutive)' + (0:numgroups-1)*(numconsecutive+groupspacing), 1, [])
This requires R2016b or later

추가 답변 (1개)

Honglei Chen
Honglei Chen 2018년 6월 18일
편집: Honglei Chen 2018년 6월 18일
Here is one possible solution
N = 9;
n = 3;
m = 2;
x = buffer(1:N,n);
x = x+(0:size(x,2)-1)*m;
x(1:N).'
HTH

카테고리

Help CenterFile Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

태그

제품


릴리스

R2017a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by