在Matlab中计算卡方是常数?

在Matlab中计算卡方是常数?,matlab,statistics,Matlab,Statistics,我一直在为学校的一些实验室测量计算卡方检验。出于某种原因,无论我试图计算的范围是多少,我都会得到一个恒定的结果。 我尝试在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

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

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

你能解释一下你到底想用这句话做什么吗:“ev_g=@(i,b,x_i)(i.*sin(pi.*b.*x_i)。/(pi.*b.*x_i))^2;”?哪一个输出参数是常量?这就是函数句柄。我有一个x_I变量(我测量的东西),我试图找到与我做的其他测量相匹配的I和b。这解释了吗?