Index not working - very simple problem!

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.

 采纳的回答

idx = abs(INSW - 3) < 1e-2; set tolerance

1 个评论

Nice that's brilliant and works, thank you!! I thought I was going mad.

请先登录,再进行评论。

更多回答(1 个)

Bruno Luong
Bruno Luong 2020-7-22
编辑:Bruno Luong 2020-7-22
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.

类别

在 帮助中心 和 File Exchange 中查找有关 Matrix Indexing 的更多信息

产品

版本

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by