gpt4 book ai didi

matlab - 选择排名在第一个四分位数内的值并将其标记为逻辑 '1'

转载 作者:行者123 更新时间:2023-12-02 07:20:58 24 4
gpt4 key购买 nike

例如,问题的简化版本:

A=

 0      10     50
20 30 20
10 70 20
40 20 10

我想获得每一列的逻辑标签,其中值排列在第一四分位数(L)第二和第三四分位数(M) ),以及第四个四分位数 (N)。所以最后我可以得到这样的输出:

L=

 1      1      0
0 0 0
0 0 0
0 0 1

中号=

 0      0      0
1 1 1
1 0 1
0 1 0

N=

 0      0      1
0 0 0
0 1 0
1 0 0

在此 4x3 矩阵示例中,每列有 4 个值。第一个四分位数(排名)表示具有最低值的值,第二和第三四分位数表示第二和第三低值,第四四分位数表示具有最高值的值。因此,在另一个示例中,如果一列有 40 个值,那么我想为矩阵中第一个四分位数的最低 10 个值标记“1”,依此类推。

假设我有 1000x1000 矩阵...“分位数”和“百分位数”函数无法执行此操作,因为它们不会对每个单元格值进行排名。那么,我应该做什么才能实现这一目标?

最佳答案

这是您要找的吗?:

pL = prctile(A,25,1);
pU = prctile(A,75,1);

L = bsxfun(@le, A, pL);
N = bsxfun(@ge, A, pU);
M = ones(size(A))-L-N;

编辑:如果存在 NaN,则将其用于 M 而不是上面的:

M = ~isnan(A)-L-N;

关于matlab - 选择排名在第一个四分位数内的值并将其标记为逻辑 '1',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26775253/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com