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

39 views (last 30 days)
Daniel Pollard on 4 Dec 2020
Edited: Daniel Pollard on 4 Dec 2020
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.

Walter Roberson on 4 Dec 2020

#### 1 Comment

Daniel Pollard on 4 Dec 2020
That's worked perfectly. Exactly what I was after, but couldn't find the right Google phrase to find it. Thank you!

R2020a

### Community Treasure Hunt

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

Start Hunting!