【发布时间】:2017-11-12 22:32:14
【问题描述】:
我在使用 matlab 的 lsqcurvefit 函数查找非线性拟合系数时遇到了一些问题。目前,我在运行代码时遇到索引超出矩阵尺寸错误。我的代码很简单,如下所示:
function aFit = fitTwoSlit(xData,yData)
load twoSlit
a0 = 4;+
aFit = lsqcurvefit(@TwoSlitInter,a0,xData,yData);
plot(xData, yData, 'bo', xData, aFit, 'k-');
end
function Inten = TwoSlitInter(a,x)
L = 1025.; % Length in mm
lambda_l = 6.7e-4; %laser lambda in mm
k_l = 9.378e+03; % k for laser in 1/mm
phi = k_l*a(2)*sin(abs(x-a(4))/L);
psi = k_l*a(3)*sin(abs(x-a(4))/L);
Inten = a(1)*(sin(phi/2)./(phi/2)).^2.*(cos(psi/2)).^2;
end
我有一个数组“a”,其中包含强度函数使用的系数。如果 lsqcurvefit 需要传递函数句柄而不是函数本身,我对如何传递这些系数感到困惑。
任何帮助将不胜感激!
【问题讨论】:
-
lsqcurvefit使用来自初始点x0的值来确定函数接受的变量的数量和大小。您没有传递向量a中的系数。
标签: matlab