Функция фильтра для k элементов больше, чем A - PullRequest
0 голосов
/ 26 июня 2018

В пакете генного фильтра R / Bioconductor есть замечательная функция kOverA (стр. 18 в этом руководстве) .

Это просто метод фильтра, который, учитывая числовую матрицу, удаляет строки этой матрицы, которые не имеют 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 голосов
/ 26 июня 2018

Требуется реляционный оператор >=, sum и логическое индексирование и все.

out = m(sum(m>=A,2) >= k,:);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...