Detect Outlier with for Schleife

1 回表示 (過去 30 日間)
cemsi888
cemsi888 2015 年 9 月 16 日
コメント済み: cemsi888 2015 年 9 月 16 日
I want to detect Outliers in my Measurement datas and thats why i use Grubbs Outlier Test. I wrote code but i got this error. Could you please help me to solve this problem? Error :Attempted to access a(18); index out of bounds because numel(a)=17.
Error in ausreisser (line 9) PG=abs((a(ii)-mu))/s
clear all
clc
a=[ 1 2 3 4 5 6 7 8 9 10 1100000000000 11 12 90 100 112 1000 1000000000];
mu=mean(a)
s=std(a)
for ii=1:length(a)
PG=abs((a(ii)-mu))/s
VG=3.2095;
else
if VG>PG
disp('kein Ausreisser vor')
disp('Es liegt ein Ausreisser vor')
a(ii)=[];
ii=ii+1
end
end
  1 件のコメント
cemsi888
cemsi888 2015 年 9 月 16 日
Could you please help me?

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

採用された回答

Image Analyst
Image Analyst 2015 年 9 月 16 日
Try this vectorized approach:
a=[ 1 2 3 4 5 6 7 8 9 10 1100000000000 11 12 90 100 112 1000 1000000000];
mu=mean(a)
s=std(a)
PG=abs(a-mu)/s
VG=3.2095;
outliers = VG > PG
a(outliers) = []
  3 件のコメント
Image Analyst
Image Analyst 2015 年 9 月 16 日
Sorry, I just took VG>PG from your original code without thinking much about it. Just reverse the sign to get outliers:
a=[ 1 2 3 4 5 6 7 8 9 10 1100000000000 11 12 90 100 112 1000 1000000000];
mu=mean(a)
s=std(a)
PG=abs(a-mu)/s
VG=3.2095;
outliers = VG < PG
a(outliers) = []
cemsi888
cemsi888 2015 年 9 月 16 日
sorry ıt ıs really simple ı have fiber .Maybe ı have to make break :(

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

その他の回答 (0 件)

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by