フィルターのクリア

sum of array by specific index value

30 ビュー (過去 30 日間)
Khairul Nur
Khairul Nur 2021 年 5 月 29 日
編集済み: KALYAN ACHARJYA 2021 年 5 月 29 日
hi, i have two array. First array containing index and second array (hasil_tambah_array) containing the value to be sum-up as below:
index =
4
2
4
hasil_tambah_array =
3.6881
0.8506
0.0132
0.8506
10.5147
12.5147
14.5074
21.8003
11.2145
18.5074
I try to sum the second array as per index such as 3.6881,0.8506,0.0132 and 0.8506 (since the 1st index is 4) will be sum together . Then 10.5147 and 12.5147 (since the 2nd index is 2) will be sum up and respectively (next will be the rest since the index is 4).
Appreciate ur time to solve this. TQIA.

採用された回答

DGM
DGM 2021 年 5 月 29 日
編集済み: DGM 2021 年 5 月 29 日
This is one way. It's probably not the most efficient way, but it does the job.
idx = [4 2 4];
H = [3.6881 0.8506 0.0132 0.8506 10.5147 12.5147 14.5074 21.8003 11.2145 18.5074].';
S = cellfun(@sum,mat2cell(H,idx,1))
S = 3×1
5.4025 23.0294 66.0296
Bear in mind that using mat2cell() to subdivide the main vector requires that sum(idx) = numel(H), so watch out for that.
  1 件のコメント
Khairul Nur
Khairul Nur 2021 年 5 月 29 日
mat2cell working great! TQ!

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

その他の回答 (1 件)

KALYAN ACHARJYA
KALYAN ACHARJYA 2021 年 5 月 29 日
編集済み: KALYAN ACHARJYA 2021 年 5 月 29 日
result=sum(second_arary(first_array))
More
result=sum(hasil_tambah_array(index))
  2 件のコメント
Khairul Nur
Khairul Nur 2021 年 5 月 29 日
編集済み: Khairul Nur 2021 年 5 月 29 日
tq for replying..tried this, but the output is wrong:
result =
11.2145
KALYAN ACHARJYA
KALYAN ACHARJYA 2021 年 5 月 29 日
編集済み: KALYAN ACHARJYA 2021 年 5 月 29 日
index =[4
2
4];
hasil_tambah_array =[3.6881
0.8506
0.0132
0.8506
10.5147
12.5147
14.5074
21.8003
11.2145
18.5074];
result=sum(hasil_tambah_array(index))
Output:
result =
2.5518
More: Same as
>> 0.8506+0.8506+0.8506
ans =
2.5518

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

カテゴリ

Help Center および File ExchangeMatrix Indexing についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by