フィルターのクリア

Entering a vector in a function with if else statement

2 ビュー (過去 30 日間)
Ida Lunde Hygum
Ida Lunde Hygum 2018 年 3 月 12 日
コメント済み: KL 2018 年 3 月 12 日
Hi Matlab community.
I made this function that should sort out data that differs more than +/- 20 % giving it "NaN" if it does. If the previous measurement varied more than 20 % it should should not do so, which i tried with the command: "(sorted_data(i-1)==NaN) && (i>1)" but when I use the debugger it does not enter this statement even though it is true. How come it won't enter this? Thanks for the help!
Kind Regards
function sorted_data=sort_for_outliers(data)
sorted_data=zeros(length(data),1);
for i=1:length(data)
if i==1
sorted_data(i)=[data(i)];
elseif (sorted_data(i-1)==NaN) && (i>1)
sorted_data(i)=[data(i)];
elseif data(i)>1.20.*data(i-1)
sorted_data(i)=[NaN];
elseif data(i)<0.80.*data(i-1)
sorted_data(i)=[NaN];
else
sorted_data(i)=[data(i)];
end
end
end
  1 件のコメント
Torsten
Torsten 2018 年 3 月 12 日
At the beginning of your function, you set "sorted_data" to zero. Thus sorted_data(i-1) will not be NaN.
Best wishes
Torsten.

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

回答 (1 件)

KL
KL 2018 年 3 月 12 日
編集済み: KL 2018 年 3 月 12 日
I'm afraid your usage of sorted_data(i-1)==NaN would always return false. The right way to find if a value is nan is to use isnan
P.S: It's always good to pay attention to the warnings on the right hand vertical bar on your editor window.
  2 件のコメント
Ida Lunde Hygum
Ida Lunde Hygum 2018 年 3 月 12 日
Hi! I tried this and it worked, thank you!
KL
KL 2018 年 3 月 12 日
You're welcome!

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

カテゴリ

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

Community Treasure Hunt

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

Start Hunting!

Translated by