对于数学堆栈交换,这可能是一个更好的问题,所以如果是这样,请告诉我。
我写了一个简单的MATLAB函数,用于粗略逼近任何特定行/列的1D高斯拟合" slice"这些数据:
function [fit,a,b,c] = getgauss(slice)
q = 1:length(slice);
b = find(slice==max(slice));
a = slice(b);
temp = gradient(slice);
c1 = find(temp==max(temp));
c2 = find(temp==min(temp));
c = round(mean([c2-b b-c1]));
fit = a.*exp(-((q-b).^2)./(2*c^2));
clear c1 c2 q temp
end
我的问题是如何将其变成2D" fit"代替?我是否只在每一行和每列上运行它,然后进行某种交叉乘法?
似乎MATLAB中有一个曲线拟合工具箱,我不能不幸。有什么提示吗?