2

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

感谢您的帮助!

4

1 回答 1

0

知道您为所有函数参数使用的参数很难理解故障在哪里,但是查看代码的一些简单观察:您正在使用参数定义函数,(i,b,x_i)然后使用参数调用它(var,i,b),这可能应该是(i,b,var)

于 2013-10-26T22:02:19.983 回答