why ismember() does not return correct result

5 Ansichten (letzte 30 Tage)
Stavros Tsimpoukis
Stavros Tsimpoukis am 10 Okt. 2023
Kommentiert: Dyuman Joshi am 11 Okt. 2023
Hello, I have an original matrix M ( Nx3 ) and another one mat ( Kx3 ). I want to have access to the indicies of rows of the original matrix, M, where the rows of the matrix mat also exist in matrix M. My code is:
idx = find(ismember(M, mat, "rows"))
While most of the rows of mat are correctly returned some rows do not. The common theme is that all of them have the third element equal (1.6).
The array mat:
Rows of array M: ( the row [-2.5 1.65 1.6] exists in the array ! )
Is this a floating point problem ?
Thanks
  1 Kommentar
Dyuman Joshi
Dyuman Joshi am 11 Okt. 2023
"Is this a floating point problem?"
Yes.
Also, experiment with the 2nd output of ismembertol.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Star Strider
Star Strider am 10 Okt. 2023
They may have very small values that are not shown, especially if they are calculated.
Using the ismembertol function will likely do what you want.

Weitere Antworten (0)

Kategorien

Mehr zu Operators and Elementary Operations finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by