Bin X data, sum corresponding Y data and then plot.

I have X data ranging from 0 to 999 and corresponding Y data. I want to bin the X data from 0 to 2000 with a bin size of 10. Then accumulate corresponding Y data in the respective bins. For example, X data from 0.1 to 10 should be taken as 10; 10.01 till 20 should be taken as 20 etc. The Y data in the same interval should be summed up and put in the corresponding bins. At the end, I want to plot X,Y . Please help me to code this... thank you.

 Accepted Answer

binnum = ceil(X/10);
binsum = accumarray(binnum(:), Y(:));
plot((1:size(binsum,1))*10, binsum);

More Answers (1)

edges = [0.1, 10, 20]; % However you define this...
[N, edges, bin] = histcounts(X, edges);
Result = accumarray(bin, Y);
I cannot check this currently. Perhaps you have to transpose an input of accumarray.

1 Comment

I tried with this code but it is giving error:
Error:
[N, edges, bin] = histcounts(X, edges);
My code:
A = load('/Users/Myfolder/Documents/MATLAB/Data.txt');
X = A(:,1);
Y = A(:,2);
edges = [0.1, 10, 20];
[N, edges, bin] = histcounts(X, edges);
Result = accumarray(bin, Y);
Also, could you please explain me how the 'edges' is defined. It should be between max value and min value of X?

Sign in to comment.

Tags

Asked:

on 3 Aug 2015

Edited:

on 4 Aug 2015

Community Treasure Hunt

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

Start Hunting!