Summing specific values in arrays
显示 更早的评论
If i have something for example say
2,3
4,5
2,5
1,5
2,1
1,1
how would i sum up all the values on the second column for values of the first column. For example for all the numbers in the first column that have a value 2, I want to some up all the values the second column corresponding to 2. i.e
2,3
2,5
2,1
would be the only things considered and the answer would be (3+5+1) which is 9. These are all the values to the right of 2. I hope this makes sense, and any help would be appreciated.
采纳的回答
更多回答(2 个)
Stalin Samuel
2015-10-9
a = [2,3;4,5;2,5;1,5;2,1;1,1]
prompt = 'Enter any no fom first column ';
x = input(prompt)
r = find(a(1:end,1)==x)
rslt = sum(a(r,2))
>> X = [2,3;4,5;2,5;1,5;2,1;1,1]
X =
2 3
4 5
2 5
1 5
2 1
1 1
>> accumarray(X(:,1),X(:,2))
ans =
6
9
0
5
where the first row corresponds to the 1's, the second row the 2's, etc. So it performs all of the sums at once, without any extra code at all! And lets compare to your example, the 2's = 3+5+1 = 9, so it gives the result that you looking for.
Note that the first input to accumarray must be integer indices, so if these are negative or floating point values then you can use unique's third output to generate a vector of integer indices to use for this input.
类别
在 帮助中心 和 File Exchange 中查找有关 Common Operations 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!