Por que 24.0000 não é igual a 24.0000 em MATLAB?

Estou escrevendo um programa em que preciso excluir pontos duplicados armazenados em uma matriz. O problema é que, quando se trata de verificar se esses pontos estão na matriz, o MATLAB não pode reconhecê-los na matriz, embora exista

No código a seguir,intersections função @ obtém os pontos de interseção:

[points(:,1), points(:,2)] = intersections(...
    obj.modifiedVGVertices(1,:), obj.modifiedVGVertices(2,:), ...
    [vertex1(1) vertex2(1)], [vertex1(2) vertex2(2)]);

O resultado

>> points
points =
   12.0000   15.0000
   33.0000   24.0000
   33.0000   24.0000

>> vertex1
vertex1 =
    12
    15

>> vertex2    
vertex2 =
    33
    24

Dois pontos vertex1 evertex2) deve ser eliminado do resultado. Isso deve ser feito pelos comandos abaixo:

points = points((points(:,1) ~= vertex1(1)) | (points(:,2) ~= vertex1(2)), :);
points = points((points(:,1) ~= vertex2(1)) | (points(:,2) ~= vertex2(2)), :);

Depois disso, temos esse resultado inesperado:

>> points
points =
   33.0000   24.0000

O resultado deve ser uma matriz vazia. Como você pode ver, o primeiro (ou o segundo?) Par de[33.0000 24.0000] foi eliminado, mas não o segundo.

Depois verifiquei estas duas expressões:

>> points(1) ~= vertex2(1)
ans =
     0
>> points(2) ~= vertex2(2)
ans =
     1   % <-- It means 24.0000 is not equal to 24.0000?

Qual é o problema

Surpreendentemente, criei um novo script que possui apenas estes comandos:

points = [12.0000   15.0000
          33.0000   24.0000
          33.0000   24.0000];

vertex1 = [12 ;  15];
vertex2 = [33 ;  24];

points = points((points(:,1) ~= vertex1(1)) | (points(:,2) ~= vertex1(2)), :);
points = points((points(:,1) ~= vertex2(1)) | (points(:,2) ~= vertex2(2)), :);

O resultado como esperado:

>> points
points =  
   Empty matrix: 0-by-2

questionAnswers(6)

yourAnswerToTheQuestion