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 views (last 30 days)
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..

Accepted Answer

Guillaume
Guillaume on 18 Jun 2018
Edited: Guillaume on 18 Jun 2018
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

More Answers (1)

Honglei Chen
Honglei Chen on 18 Jun 2018
Edited: Honglei Chen on 18 Jun 2018
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

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Tags

Products


Release

R2017a

Community Treasure Hunt

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

Start Hunting!