私は、学校のいくつかのラボ測定値でカイ二乗検定を計算しようとしています。何らかの理由で、計算しようとしている範囲に関係なく、一定の結果が得られます。matlabでテストしようとしている機能は次のとおりです。
ev_g = @(i,b,x_i) (i.*sin(pi.*b.*x_i)./(pi.*b.*x_i)).^2
私の入力は x_i ベクトルで、測定値に最適な b と i を見つけようとしています。誤動作しているコードは次のとおりです。
function [ chi2_min, b_final, i_final ] = chi2_general( func,var, guess_1,guess_2,O_i,error,limit1,limit2,step1,step2 )
i=guess_1;
chi2_min = 999999;
b_final = 0;
i_final = 0;
while i<limit1
b=guess_2;
while b<limit2
chi2_temp = sum((O_i-func(var,i,b)).^2./(error.^2));
if chi2_temp<=chi2_min
chi2_min = chi2_temp;
b_final = b;
i_final = i;
end
b=b+step2;
end
i = i+step1;
end
fprintf('%f\n%f\n%f', chi2_min, b_final, i_final);
end
助けてくれてありがとう!