How do I replace same values in an array?
2 次查看(过去 30 天)
显示 更早的评论
If I have this couples of values: 1—5; 2—7; 3—4; 2—3; 6—5 and I want that the first column is the x column and the second one is the y column of an xy graph (especially an histogram), how can I make that for the same value of x, y is the sum of y values for the same x as follow? 1—5; 2—10; 3—4; 6—5.
Thank you
Fabio
0 个评论
采纳的回答
dpb
2014-5-20
If
xy=your array;
y=accumarray(xy(:,1),xy(:,2));
See
doc unique
doc accumarray
for how the above works...
>> xy=[1 5;2 4;3 8; 2 6];
>> [unique(xy(:,1)) accumarray(xy(:,1),xy(:,2))]
ans =
1 5
2 10
3 8
4 个评论
dpb
2014-5-21
Or in place without a temporary,
ac(ac==0)=[]; % to delete zeros
You can also get more clever in using unique and accumarray together with the alternate outputs of unique as indices and anonymous functions to only sum the nonzero entities. I'll leave as "exercise for the student"; the nuances of accumarray are legion and an area of expertise to be gained all of its own. :)
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 NaNs 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!