在Matlab中,我想将数据合并到给定值的分箱中。在Matlab中,将数据合并到给定值的分箱中
例如,假设我有以下数据
data = [rand(50,1) rand(50,1)*10];
data = sortrows(data,2);
这里,第一列是y值,第二列为x的数据。例如,现在我想为y的数据的平均值(和四分位数)计算例如值为3的x的bin。
我认为这是我如何处理1的垃圾箱,但如果我想要价值n的垃圾箱呢?
m = accumarray(floor(data(:,2))+1, data(:,1), [], @mean);
l = accumarray(floor(data(:,2))+1, data(:,1), [], @(x) quantile(x,.25));
u = accumarray(floor(data(:,2))+1, data(:,1), [], @(x) quantile(x,.75));
所以数据应该是4列的矩阵:平均值,下限值,上限值和分档。为值3箱的第4列是:0 3 6 9 ...
我不认为这是正确的:
result = [m l u (0:numel(m)-1).'];