Summing elements of a vector without a for loop

2 Ansichten (letzte 30 Tage)
daniel adams
daniel adams am 29 Okt. 2021
Bearbeitet: Yongjian Feng am 2 Nov. 2021
Given a vector/array v of length , I would like to create a new vector of length M where the 1st component is the sum of the 1st 5 elements of v, the 2nd element is the sum of the next 5 elements of v,... and so on until we get to the last element which is the sum of the last 5 elements of v.
Is there a quick way to do this without using a for loop?

Akzeptierte Antwort

Yongjian Feng
Yongjian Feng am 29 Okt. 2021
Bearbeitet: Yongjian Feng am 2 Nov. 2021
How about this:
M=3; % you know your M
v = ones(1, M^2); % your v vector
vReshaped = reshape(v, M, M)'; % Note need this.
result = sum(vReshaped, 2)';
  3 Kommentare
Stephen23
Stephen23 am 2 Nov. 2021
n = 3;
v = 1:9; % square brackets are not required
r = sum(reshape(v,n,n),1) % transpose is not required
r = 1×3
6 15 24
Yongjian Feng
Yongjian Feng am 2 Nov. 2021
Cool. Even better.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

KSSV
KSSV am 29 Okt. 2021

Kategorien

Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by