「Outliers.m」は、上位レベルの .m ファイルから呼び出されます。変数はすべて上位レベルのファイルで定義され、Outliers.m によるアクセスのためにグローバルとして設定されます。このコードの目的は、Chauvenets Criterion を使用して外れ値を識別することです。そのためには、Integral 関数と関数ハンドルを使用して、ガウス分布の積分を計算する必要があります。テストとして特定の変数を入力すると、コードが機能し、適切な値が得られますが、ループで機能させることはできません。私のデータ セットは、それぞれ 1x30 の 7 つの個別のサンプルで構成されており、そのすべてを分析する必要があります。さまざまなエラーが発生し、積分ハンドルと関数ハンドルに関するガイダンスを読みましたが、解決策が見つからないようです...ヘルプやガイダンスをいただければ幸いです....ここに私のコードがあります:
n = 7
for x = 1:n
for y = 1:30
z(x,y) = abs((cc(x,y) - mastercc(1,y))/masterccstd(1,y));
xmax(x,y) = mastercc(1,y)+z(x,y)*masterccstd(1,y);
xmin(x,y) = mastercc(1,y)-z(x,y)*masterccstd(1,y);
p(x,y) = 1/(masterccstd(1,y)*(sqrt(2*pi)));
fun(x,y)= @(x,y,z) (exp(-1/2)*z(x,y).^2);
q(x,y) = integral(fun(x,y),xmin(x,y),xmax(x,y),'ArrayValued',true);
pq(x,y) = p(x,y)*q(x,y); % probability
value(x,y) = n*(1/pq(x,y));
count(x,y) = logical(value(x,y) <0.5);
badbins(x)=sum(count(x,:));
end
end