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.

 採用された回答

madhan ravi
madhan ravi 2020 年 7 月 22 日

0 投票

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

1 件のコメント

Catriona Fyffe
Catriona Fyffe 2020 年 7 月 22 日
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 日

0 投票

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.

1 件のコメント

Catriona Fyffe
Catriona Fyffe 2020 年 7 月 22 日
Ok thanks also for this info, I'll look out for that in future!

サインインしてコメントする。

カテゴリ

ヘルプ センター および 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