フィルターのクリア

Index not working - very simple problem!

3 ビュー (過去 30 日間)
Catriona Fyffe
Catriona Fyffe 2020 年 7 月 22 日
コメント済み: Stephen23 2020 年 7 月 22 日
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 日
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 日
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!

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

カテゴリ

Help Center および File ExchangeLoops and Conditional Statements についてさらに検索

製品


リリース

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by