数组中2百分位数内的值

时间:2016-02-22 13:05:20

标签: arrays matlab

我有2个长度为200的向量,比如A和B;然后我使用A找到数组A1=prctile(A, [1:2:100],1);的每秒百分位数,以便A1是一个长度为50的数组。现在我想找到A中每个元素的平均值。 A1的两个元素(即第2和第4百分位数之间的A元素的平均值),并且还平均B的相应元素。我也希望获得B对应于A的值,就像第2和第4百分位数中的A的元素是[2,8,19],它可能是长度为200的数组A中的第16,第22和第112个元素,那么我也是需要平均值为向量B的第16个第22个和第112个元素...

1 个答案:

答案 0 :(得分:0)

由于您需要常规百分位数,您是否可以假设它们在排序时出现在数据的每个n/50元素上?

[ASort, idxSort] = sort(A);
BSort = A(idxSort);

sub = ceil((1:numel(A))/(numel(A)/50))';

AMeans = accumarry(sub, ASort(:), [], @mean)
BMeans = accumarry(sub, BSort(:), [], @mean)