Intersection of matrix rows up to a given column

조회 수: 4 (최근 30일)
MByk
MByk 2017년 7월 12일
댓글: MByk 2017년 7월 13일
How can I find the number of intersecting elements of a matrix up to a user defined column? For example, intersection of first 3 elements. This is what I tried, but it is not working. Thx for the help.
r=[1 2 3 4 5 6; 2 3 4 5 6 1; 1 5 6 3 2 4];
d=3;
dist=pdist(r,@(a,b)length(intersect(a(:,1:d),b(:,1:d))))

채택된 답변

Walter Roberson
Walter Roberson 2017년 7월 12일
[A,B] = ndgrid(1:size(r,1),1:size(r,1));
dist = arrayfun(@(aidx,bidx)numel(intersect(r(aidx,1:d),r(bidx,1:d))), A, B);
  댓글 수: 5
Walter Roberson
Walter Roberson 2017년 7월 13일
dist=pdist(r,@(a,b) sum(ismember(b(:,1:d), a(:,1:d)),2))
"A distance function must be of form
d2 = distfun(XI,XJ)
taking as arguments a 1-by-n vector XI, corresponding to a single row of X, and an m2-by-n matrix XJ, corresponding to multiple rows of X. distfun must accept a matrix XJ with an arbitrary number of rows. distfun must return an m2-by-1 vector of distances d2, whose kth element is the distance between XI and XJ(k,:)."
MByk
MByk 2017년 7월 13일
Thank you this one is far too simple to interpret.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

Community Treasure Hunt

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

Start Hunting!

Translated by