【发布时间】:2017-05-24 14:27:35
【问题描述】:
最佳拟合线性参数 A 和 B (y=Ax+b) 对应于这些参数上的卡方函数的最小值。我想对全局最小值进行蛮力网格搜索(保证,因为 2 参数线性卡方是抛物面)并通过 3 个嵌套循环(如下)实现了它,但希望避免循环(即,使用数组属性进行矢量化)。
卡方(加权最小二乘)定义为(伪代码):
卡方(k,j) = sum (y[i]-(A[k]*x[i]+B[j]))/yerr[i])^2.
以下是 Matlab 代码,它使用 A 和 B 参数值的 10,000 个组合(每个 100 个值)的卡方值填充 100 x 100 网格。共有三个数据数组:x、y 和yerr。
感谢您对 2 参数线性卡方网格的无环版本的任何帮助!
基思
% create parameter grid
a = linspace(85,110,100);
b = linspace(10,35,100);
[A,B] = meshgrid(a,b);
% calculate chi-square over parameter grid
chi2(100,100) = zeros;
for k = 1:100;
for j = 1:100;
for i = 1:length(y)
chi2a = ((y(i)-a(k)*x(i)-b(j))/yerr(i)).^2;
chi2(k,j) = chi2(k,j)+chi2a;
end
end
end
【问题讨论】:
标签: matlab vectorization