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 visualizzazioni (ultimi 30 giorni)
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..

Risposta accettata

Guillaume
Guillaume il 18 Giu 2018
Modificato: Guillaume il 18 Giu 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

Più risposte (1)

Honglei Chen
Honglei Chen il 18 Giu 2018
Modificato: Honglei Chen il 18 Giu 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

Categorie

Scopri di più su Loops and Conditional Statements in Help Center e File Exchange

Tag

Prodotti


Release

R2017a

Community Treasure Hunt

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

Start Hunting!

Translated by