我一直在尝试计算一些学校实验室测量的卡方检验。出于某种原因,无论我试图计算的范围是什么,我都会得到一个恒定的结果。我试图在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
感谢您的帮助!