How do I efficiently iterate over subvectors of a given vector?

3 visualizaciones (últimos 30 días)
I have a vector of length N, which I want to generate all possible subvectors of of length n and sum over the subvectors. At the minute I have written
for val = 1:(N-n)
sums(val) = sum(vector(val:(val+n)))
end.
For example, if vector = [1, 2, 3, 4] and n=2, then this would return
sums = [3, 5, 7].
However, this code isn't very efficient. I'm aware of the buffer function in the Signal Processing toolbox, and using this speeds up my code by around a factor of 4, but I'm trying to avoid toolbox functions as I'm aiming to use Matlab Coder to translate into C code, which doesn't understand toolbox functions as far as I'm aware.
Is there a more efficient way to do this, possibly without using the for loop? I've done as much as I can with my knowledge, for example preallocating the sums vector, but I'm not sure how else to improve it.

Respuesta aceptada

Walter Roberson
Walter Roberson el 4 de Dic. de 2020
  1 comentario
Daniel Pollard
Daniel Pollard el 4 de Dic. de 2020
That's worked perfectly. Exactly what I was after, but couldn't find the right Google phrase to find it. Thank you!

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Numeric Types en Help Center y File Exchange.

Productos


Versión

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by