Ich habe eine 12x3
matrix:Wie vergleiche ich Vektor- und Matrixspalten, die eine Bedingung erfüllen?
point1 = [7.5 4 5
8.5 4 5
9.5 4 5
10.5 4 5
11.5 4 5
7 4 5.5
12 4 5.5
6.5 4 6
12.5 4 6
6 4 6.5
13 4 6.5
5.5 4 7];
Die folgenden beiden Vektoren aus point1
nach bestimmten Verfahren erhalten wurden.
A1 = [7.5,4,5];
A8 = [6.5,4,6];
die Zeilenindizes A1 and A8
jeweils in point1
sind AIdx == 1
und AIdx == 8
.
Was ich möchte, ist sowohl von A1 and A8
zu vergleichen, wer von ihnen (oder möglicherweise beide) eine nicht-ganze Zahl in der gleichen Spalte wie die 6. Reihe von point1 zu sehen.
Ich habe den folgenden Code versucht:
AIdx = find(ismember(point1, vertcat(A1, A8), 'rows'));
for ii = 1: numel(AIdx)
% In case where a close point is found, compare if they are both in the same plane
if isequal(mod(point1(AIdx(ii),:),1)~=0, mod(point1(6,:),1)~=0)== true
point1(AIdx(ii),:) = [NaN,NaN,NaN]; %invalidate all AIdx in the same plane as point1
elseif isequal(mod(point1(AIdx(ii),:),1)~=0, mod(point1(6,:),1)~=0)== false
AIdx(ii,:) = [];
end
end
Allerdings erhalte ich die Fehlermeldung: „Index Matrix Dimensionen übersteigt.“ und ich habe das Gefühl, das aus dem Teil kommt
mod(Point1(AIdx(ii),:),1)
wobei bei ii = 2 (hence AIdx=8)
ein Problem auftritt.
Es funktioniert jetzt. Ich sehe, dass ich 'Aidx' nach dem' "elseif" 'nicht löschen musste. Ich danke dir sehr! – User1772