我一直无法找到matlab或octave中的函数来做我想做的事情.我有一个两列的矩阵m(x和y值).我知道我可以通过m(:,1)或m(:,2)来提取列.我想把它分成[可能]大小相等的较小的基质,并绘制这些基质的平均值.换句话说,我想根据x值将值放入bin中,然后找到bin的方法.我觉得hist函数应该对我有帮助,但似乎没有.
有没有人知道内置函数做这样的事情?
编辑
我本来打算提一下,我看了一下hist,无法让它做我想做的事,但它一定是我的想法.
示例:假设我有以下内容(我在八度音程中尝试此操作,但afaik在matlab中有效):
x=1:20; y=[1:10,10:1]; m=[x, y];
如果我想要10个箱子,我希望将其拆分为:
m1=[1:2, 1:2] ... m5=[9:10, 9:10] m6=[10:11, 10:-1:9] ... m10=[19:20, 2:-1:1]
然后得到每个bin的平均值.
更新:我在这里发布了一个后续问题.我非常感谢回复.
我在博客上以视频形式回答了这个问题:
http://blogs.mathworks.com/videos/2009/01/07/binning-data-in-matlab/
这是代码:
m = rand(10,2); %Generate data x = m(:,1); %split into x and y y = m(:,2); topEdge = 1; % define limits botEdge = 0; % define limits numBins = 2; % define number of bins binEdges = linspace(botEdge, topEdge, numBins+1); [h,whichBin] = histc(x, binEdges); for i = 1:numBins flagBinMembers = (whichBin == i); binMembers = y(flagBinMembers); binMean(i) = mean(binMembers); end