大于A的k个元素的过滤功能

时间:2018-06-26 18:11:53

标签: matlab matrix

在R / Bioconductor的Genefilter软件包中,有一个很好的函数,叫做kOverA (page 18 in this manual)

在给定数值矩阵的情况下,这只是一种过滤方法,可删除该矩阵中不包含k值大于或等于A值的行。

我如何在MATLAB中做同样的事情?


示例(简化。在R中,kOverA返回一个函数,因此实际语法有点不同,但这是我想要的功能):

m = [1 0 0 0 0 0 1 1 1 0
     0 0 0 0 0 0 0 0 0 0
     1 1 1 1 1 1 1 1 1 1
     0 1 0 1 0 1 0 1 0 1];

kOverA(m, A=1, k=0) → m  

kOverA(m, A=2, k=1) → empty 

kOverA(m, A=1, k=1) → [1 0 0 0 0 0 1 1 1 0
                       1 1 1 1 1 1 1 1 1 1
                       0 1 0 1 0 1 0 1 0 1]

kOverA(m, A=1, k=4) → [1 0 0 0 0 0 1 1 1 0
                       1 1 1 1 1 1 1 1 1 1 
                       0 1 0 1 0 1 0 1 0 1]

kOverA(m, A=1, k=5) → [1 1 1 1 1 1 1 1 1 1 
                       0 1 0 1 0 1 0 1 0 1]

1 个答案:

答案 0 :(得分:2)

需要关系运算符>=sumlogical indexing就是这样。

out = m(sum(m>=A,2) >= k,:);