reihenweisen Matrix mit dem Vektor in Matlab zu vergleichen, habe ich eine Matrix A
in Matlab der Dimension MxN
und zwei Zeilenvektoren B
und D
der Dimension 1xN
. Ich würde gerne den schnellsten Weg zum Vergleich B
mit jeder Zeile von A
wissen. Alle Elemente sind 1
oder 0
.schnelle Weise
Spezifisch
A=[ 1 1 1;
1 1 0;
1 0 1;
1 0 0;
0 1 1;
0 1 0;
0 0 1;
0 0 0];
B=[1 1 1];
D=[1 0 0]
Ich möchte, um eine Matrix der Dimension C
konstruieren Mx1
mit C(i)=1
wenn
B(1,1)>=A(i,1)
und B(1,2)>=A(i,2)
und ... B(1,N)>=A(i,N)
und
D(1,1)<=A(i,1)
und D(1,2)<=A(i,2)
... und D(1,N)<=A(i,N)
und
B(:)
unterscheidet sich von A(i,:)
und
D(:)
unterscheidet sich von A(i,:)
Im Beispiel
C=[0;1;1;0;0;0;0;0];
Eine Möglichkeit, dies zu tun
lownew=repmat(D,size(A,1),1);
greatnew=repmat(B,size(A,1),1);
C=(sum(lownew<=A,2)==N & sum(greatnew>=A,2)==N & sum(lownew==A,2)~=N & sum(greatnew==A,2)~=N);
Gibt es eine schnellere Möglichkeit sein könnte ? Meine reale Matrix A
hat eine Dimension größer als 10^6
.
Danke, ich habe ein bisschen mehr meine Frage erarbeitet. Könnten Sie einen Blick darauf werfen? – user3285148
Hey, ändere die Frage nicht so nach einer Antwort. Bitte stellen Sie stattdessen eine andere Frage. Ich werde meine Antwort trotzdem bearbeiten. – Ratbert