2016-11-04 3 views
3

Ich habe ein Problem, gemeinsame Elemente zwischen allen Spalten einer Matrix in MATLAB zu finden, ich habe versucht, es selbst zu lösen, das grundlegende Problem ist Schnittpunkt-Funktion gesetzt Schnittpunkt nur zwischen zwei Matrizen, so schrieb ich einen Code wie dieseFinde gemeinsame Elemente zwischen allen Spalten einer Matrix in Matlab

A=randi(n,m); 
B=struct(); 
for k=1:size(A,2)-1 
    B.(['b' num2str(k)])=intersect(A(:,k),A(:,k+1)); 
end 

leider das Problem lösen ist nicht die Dimension von A Ursache unbekannt ist, so haben wir gleiches Problem mit B! danke allen.

Antwort

1

Ein vektorisiert Ansatz bsxfun -

unqA = unique(A) 
out = unqA(all(any(bsxfun(@eq,A,permute(unqA,[2,3,1])),1),2)) 

Probelauf -

A = 
    8  5  6  4  8 
    4  6  7  5  9 
    9  4  4  7  5 
    9  4  9  5  6 
    9  9  7  9  6 
    9  5  9  4  8 
    8  5  6  9  8 
    7  5  6  7  4 
out = 
    4 
    9 
Verwandte Themen