我有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个元素...
答案 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)