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?

16 visualizaciones (últimos 30 días)
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..

Respuesta aceptada

Guillaume
Guillaume el 18 de Jun. de 2018
Editada: Guillaume el 18 de Jun. de 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

Más respuestas (1)

Honglei Chen
Honglei Chen el 18 de Jun. de 2018
Editada: Honglei Chen el 18 de Jun. de 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

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2017a

Community Treasure Hunt

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

Start Hunting!

Translated by