Azzera filtri
Azzera filtri

maximal subset N of binary matrix

5 visualizzazioni (ultimi 30 giorni)
David
David il 16 Gen 2013
Hello, i have a 200x200 symmetric binary matrix that's relatively sparse. I want to choose a subset N of rows with their matching columns that have the largest sum (i.e. most 1's).
That is, imagine it's set of 200 subjects, and I've got a matrix of all their interactions (that are either successful =1, or failures = 0). I want to find, for example, the 10 subjects that were the most successful (doesn't matter if there are more than one subset of 10 that did perfectly, I just need to find one)
I'm racking my brain trying to do this efficiently and hope someone might have a good solution out there.
thank you very much for your time, dave
  1 Commento
David
David il 16 Gen 2013
Thank you for your responses, I think I wasn't very clear!
I need not the 10 largest row (col) sum, but need the 10 subjects whose interactions were the greatest. Say, for example, I just wanted the top 3 performers, and looked at subject 4 7 11. I would look at their matching coordinates and sum that value as their total score (which, in this case, would include 6 matrix element values, the 6 interactions for the three subjects).
So i'm not really looking for the max columns, but the max interactions for a given subset of N subjects within a larger set of say, 200 subjects. I hope that is more clear. thank you for the fast responses!

Accedi per commentare.

Risposte (2)

Walter Roberson
Walter Roberson il 16 Gen 2013
That array is not very big, so I would suggest something like
[maxvals, maxidx] = sort( sum(YourArray), 'descend' )
then maxvals(1:10) are the values and maxidx(1:10) are the corresponding row indices, and YourArray(maxidx,:) would be the rows.
  1 Commento
David
David il 16 Gen 2013
see my comments above, thank you for your responses.

Accedi per commentare.


Andrei Bobrov
Andrei Bobrov il 16 Gen 2013
M = rand(200) > .95; % your binary matrix
out = M(sum(M,2) > 10,:);
  1 Commento
David
David il 16 Gen 2013
see my comments above, thank you for your responses.

Accedi per commentare.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by