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 に答える