Averaging values within bins
112 次查看(过去 30 天)
显示 更早的评论
Hi,
I have the two arrays x and y (attached), which I plot with plot(x,y). This is creating "bins" of width 5:
What is the fastest way to average the values within each such bin, such that we end up with one value/bin, especially if we don't want to pre-define bin width?
Thanks
3 个评论
Stephen23
2018-10-28
"Would the histogram function help nevertheless?"
Yes, because they can also return the indices.
回答(2 个)
Bruno Luong
2018-10-28
load('y.mat')
load('x.mat')
plot(x,y)
edges = (0:5:50);
[~,~,loc]=histcounts(x,edges);
meany = accumarray(loc(:),y(:))./accumarray(loc(:),1);
xmid = 0.5*(edges(1:end-1)+edges(2:end));
figure
plot(x,y)
hold on;
plot(xmid,meany,'r')
2 个评论
AnnieLieseMari
2022-6-13
Hi there!
I'm working with a very similar data set and need some help with my code. I know this was posted and answered a while ago, but I would really appreciate the help.
After using the same code you provided, but with my data set and edges of (4.25:0.5:17.75), I am getting an error saying "First input SUBS must contain positive integer subscripts."
I have a data set of x and y values that is upwards of 2000+ data points. It's super big and when I zip it, the Help Center is still saying it's too big. Please let me know if you'd like me to provide a sample of maybe 20 or so data points to help out.
I think the main reason this is happening is that my data has NaN values in it. Though, I'm not sure how to remove those. Of course, if I remove the x values, I have to preserve the y values so the other pairs still match up.
Bruno Luong
2022-6-13
Simply remove the bad data:
keep = isfinite(x) & isfinit(y);
x = x(keep);
y = y(keep);
... do the rest
Make sure the extrem edges cover entirely your data.
Steven Lord
2018-10-28
Do you want to use histogram or histcounts to bin the data, or are you looking for something more of a moving average, where the value of the averaged signal at a particular time is the mean of the data for that time and some data points before and after that time? If the latter, see movmean.
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Data Distribution Plots 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!