Index not working - very simple problem!
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Catriona Fyffe
el 22 de Jul. de 2020
Comentada: Stephen23
el 22 de Jul. de 2020
I want to find the indices of a vector of shortwave radiation values which = 3 and replace them with 0. Should be simple.
My code is:
idx=INSW==3;
INSW(idx)=0;
I know there are 3s in the data, but sum(idx)=0. What on earth is going on?
I can even do
idx=INSW(122)==3 %I know there is a 3 here
but still idx=0.
If I look for 0s or other numbers instead the code works and finds them. I don't know if its something to do with the data format? It should be just double. Here's some screenshots of the data and problem. I have tried also using 3.0000 and 3.000000000000000.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/335589/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/335592/image.png)
1 comentario
Stephen23
el 22 de Jul. de 2020
"I don't know if its something to do with the data format?"
It has nothing to do with the display format. The values are different, that is all.
Read about the behaviors of binary floating point numbers:
This is worth reading as well:
Respuesta aceptada
Más respuestas (1)
Bruno Luong
el 22 de Jul. de 2020
Editada: Bruno Luong
el 22 de Jul. de 2020
Your 3 in array is actually not 3 but something like 3.0000000001 or other variant.
When you see MATLAB dispay with .0000 if often means that.
Ver también
Categorías
Más información sobre Loops and Conditional Statements en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!