comparing floating point numbers
Mostrar comentarios más antiguos
Dear all,
I have two arrays A and B consisting of floating point numbers. The size of array A is [104,1] and B is [641,1]. I want to compare each element of A with every element of B.
[A]=[0
2.527947992282320e-04
1.809924379782077e-04
....
]
[B]=[0
0.005
0.010
0.015
.....
]
Kindly help me.
Thanks in advance.
1 comentario
Image Analyst
el 10 de Abr. de 2018
What does "compare" mean to you? Do you want to check for "equality"? Do you want to know which is greater or lesser? Do you want to know the distance (difference) between corresponding (or all) elements from each other? Please define "compare".
See the FAQ for info that will help you: http://matlab.wikia.com/wiki/FAQ#Why_is_0.3_-_0.2_-_0.1_.28or_similar.29_not_equal_to_zero.3F
Respuestas (3)
KSSV
el 10 de Abr. de 2018
0 votos
Read about ismemebrtol
1 comentario
Abhinav Srivastava
el 10 de Abr. de 2018
A-B'
will generate a 104x641 matrix where each row is a value of A minus each individual value of B.
The ' operator takes the transpose of the vector B, allowing you to use implicit expansion. This will only work with later versions of MATLAB I believe.
5 comentarios
Guillaume
el 10 de Abr. de 2018
In case B contains complex numbers using .' (plain transpose) would be safer than ' (which is the conjugate transpose).
In earlier versions of matlab (pre R2016b), you'd use bsxfun instead of implicit expansion
bsxfun(@minus, A, B.')
Abhinav Srivastava
el 10 de Abr. de 2018
but they didn't worked
The bsxfun version is guaranteed to work (as long as you have enough memory to store the result). Now, it may not give the result you expected but that's because you've not explained clearly what you want.
I have to compare elements of A with B and group them within intervals present in B
So, are you trying to find the at which k index of B the value A(i) is between B(k) and B(k+1)?
Abhinav Srivastava
el 10 de Abr. de 2018
Guillaume
el 10 de Abr. de 2018
"Yes I am trying to find index..."
Then I have answered that...
If you're trying to find at which k index of B the value A(i) is between B(k) and B(k+1), then:
[~, idx] = histc(A, B) %in R2013. Newer versions of matlab have much better functions for that
Categorías
Más información sobre Logical en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!