ismembertol

Testa pertinência a um conjunto de valores de ponto flutuante dentro de uma tolerância.

Categoria: Language Fundamentals > Operators and Elementary Operations

Sintaxe

tf = ismembertol(a, S)

Retorna true para cada elemento de a que está dentro da tolerância padrão de algum elemento de S.

tf = ismembertol(a, S, tol)

Usa a tolerância tol.

[tf, loc] = ismembertol(___)

Retorna também o índice em S de um elemento correspondente.

Descrição

Dois números são considerados membros um do outro quando abs(u - v) <= tol * max(abs([a(:); S(:)])). O ismember comum exige igualdade exata, o que falha para valores como 0.1 + 0.2 e 0.3, que diferem nos últimos bits.

A tolerância é relativa aos dados, então se ajusta bem tanto para números minúsculos quanto enormes.

Argumentos de entrada

a
Valores a procurar.
S
Conjunto de valores onde procurar.
tol
Tolerância relativa, escalada pelo maior valor absoluto em a e S. Os padrões são 1e-6 para single e 1e-12 para double.

Argumentos de saída

tf
Array lógico com o tamanho de a.
loc
Índice em S para cada correspondência, 0 onde não há.

Exemplo

ismember(0.1 + 0.2, 0.3)
ismembertol(0.1 + 0.2, 0.3)
[tf, loc] = ismembertol([0.1 + 0.2, 5], [0.3 1 5])
Saída
ans = logical
   0
ans = logical
   1
tf = 1×2 logical array

   1   1
loc = 1×2

     1     3

Veja também

ismember uniquetol abs eps