我在 MATLAB 中有一个矩阵,我需要找到每一列的 99% 值。换句话说,99%的人口都比它大。MATLAB中有这个功能吗?

有帮助吗?

解决方案

使用QUANTILE功能。

Y = quantile(X,P);

其中X是一个矩阵,P是标量或概率的矢量。例如,如果P = 0.01时,Y将是每个列的值的向量,使得列中的值的99%都较大。

其他提示

最简单的解决方案是使用该函数 分位数 作为 yuk建议.

Y = quantile(X,0.01);

但是,您将需要 统计工具箱 使用该功能 分位数. 。可以通过注意到以下内容找到不依赖于工具箱的解决方案 分位数 调用函数 聚氯乙烯, ,它本身调用内置函数 INTERP1Q 进行初步计算。对于不包含 2-D 矩阵的一般情况 您可以使用以下代码计算每列的分位数:

P = 0.01;       %# Your probability
S = sort(X);    %# Sort the columns of your data X
N = size(X,1);  %# The number of rows of X
Y = interp1q([0 (0.5:(N-0.5))./N 1]',S([1 1:N N],:),P);  %'# Get the quantiles

这应该会给你带来与调用相同的结果 分位数, ,无需任何工具箱。

如果您还没有统计工具箱,总有

y=sort(x);
y(floor(length(y)*0.99))

y(floor(length(y)*0.01))

这取决于你是什么意思。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top