Summing elements of a vector without a for loop

11 ビュー (過去 30 日間)
daniel adams
daniel adams 2021 年 10 月 29 日
編集済み: Yongjian Feng 2021 年 11 月 2 日
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?

採用された回答

Yongjian Feng
Yongjian Feng 2021 年 10 月 29 日
編集済み: Yongjian Feng 2021 年 11 月 2 日
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 件のコメント
Stephen23
Stephen23 2021 年 11 月 2 日
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 2021 年 11 月 2 日
Cool. Even better.

サインインしてコメントする。

その他の回答 (1 件)

KSSV
KSSV 2021 年 10 月 29 日

カテゴリ

Help Center および File ExchangeCreating and Concatenating Matrices についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by