我一直无法找到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]

然后得到每个垃圾箱的平均值。

更新:我已在此处发布了一个后续问题。我非常感谢回复。

有帮助吗?

解决方案

我在博客上以视频形式回答了这个问题:

http://blogs.mathworks.com /视频/ 2009/01/07 /合并 - 数据 - 在与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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top