向量 MATLAB 中四分位数在 0.25 和 0.75 之间的数字

Numbers between 0.25 and 0.75 of quartiles in a vector MATLAB

我有一个简单数字向量,例如:

a=[1 2 3 4 5 6 7 8]

我希望矢量的所有数字都落在 [25% 75%] 四分位数之间。但是,当我使用以下命令时:

quantile(a,[0.25 0.75])

它只给了我 2 和 6 的 2 个数字(而不是 3,4,5,6)。 你有什么解决办法吗?

根据 quantile, the quantile() 函数的数学定义,给定 [0.25 0.75] 应该 returning {3,4,5,6}

a 的分位数可以被认为是 acumulative distribution function (CDF) 的倒数。由于 CDF Fa(x) = P(a ≤ x) 是右连续递增函数,其反函数 Fa-1(q) 也是一对一的函数。

因此quantile(0.25)只能return单个值(标量),最小值x使得P(a≤x)=0.25。

但是,逻辑索引 可以解决问题。请参阅下面的代码。

% MATLAB R2017a
a = [1 2 3 4 5 6 7 8];
Q = quantile(a,[0.25 0.75]) % returns 25th & 75th quantiles of a
aQ = a(a>=Q(1) & a<=Q(2))   % returns elements of a between 25th & 75th quantiles (inclusive)