maximal subset N of binary matrix

2 次查看(过去 30 天)
David
David 2013-1-16
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 个评论
David
David 2013-1-16
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!

请先登录,再进行评论。

回答(2 个)

Walter Roberson
Walter Roberson 2013-1-16
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.

Andrei Bobrov
Andrei Bobrov 2013-1-16
M = rand(200) > .95; % your binary matrix
out = M(sum(M,2) > 10,:);

类别

Help CenterFile Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by