how to compare every pair of rows and return a matrix?

2 visualizzazioni (ultimi 30 giorni)
Hello guys, I have a matrix of 135 rows and 2 columns and I want to compare every two pairs of rows based on their overlapped elements and return a matrix.
I have attached some rows from my matrix to make the question more clear
  4 Commenti
Guillaume
Guillaume il 22 Mag 2018
Modificato: Guillaume il 22 Mag 2018
It's not clear what a common element is. Not helped by the fact that there's probably a typo in if i take row2 and row2 they have 5 common elements since comparing something with itself is certain to say that everything is common.
Similarly, defines what compare means for you.
chocho
chocho il 22 Mag 2018
Modificato: chocho il 22 Mag 2018
@Guillaume sorry is a typo I mean row2 and row3 because they have 5 genes in common (RASGRP4, RASGPR2, RAF1, PRAKACA, RAS1) so the output is 5

Accedi per commentare.

Risposta accettata

Jan
Jan il 22 Mag 2018
I guess your matrix is a cell string and you want to find common sub-strings in it.
% Assuming your matrix is called "M":
n = size(M, 1);
% Convert the strings in the 2nd column to cell strings:
Sub = cell(1, n);
for k = 1:n
Sub{k} = strtrim(strsplit(M{k, 2}, ','));
end
Match = cell(n, n);
for i1 = 1:n
for i2 = i1+1:n
v = intersect(Sub{i1}, Sub{i2});
Match{i1, i2} = v;
Match{i2, i1} = v; % Output is symmetric
end
end
Or maybe you want ismember instead of intersect. Or you want to output the indices? Or the output should be a logical matrix, which is TRUE if the sub-strings have any overlap?
Please explain "compare every two pairs of rows" specifically. Most likely the above code can be adjusted easily.
  8 Commenti
chocho
chocho il 28 Mag 2018
@ Jan hello jan plz if I want to change new_variable = v / (m + n) to new_variable = v^2 / (m * n) So this line will be like this :
v= sum(ismember(Sub{i1}, Sub{i2}))^2 / (len1 * len2);
is it right ??

Accedi per commentare.

Più risposte (0)

Community Treasure Hunt

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

Start Hunting!

Translated by