Matlab 将1D函数应用于二维空间
对于数学堆栈交换来说,这可能是一个更好的问题,所以如果是这样,请告诉我 我正在对具有相当高斯形状的2D图像矩阵进行一些分析: 我编写了一个简单的MATLAB函数,用于获得该数据任何特定行/列“切片”的1D高斯拟合的粗略近似值:Matlab 将1D函数应用于二维空间,matlab,image-processing,2d,gaussian,Matlab,Image Processing,2d,Gaussian,对于数学堆栈交换来说,这可能是一个更好的问题,所以如果是这样,请告诉我 我正在对具有相当高斯形状的2D图像矩阵进行一些分析: 我编写了一个简单的MATLAB函数,用于获得该数据任何特定行/列“切片”的1D高斯拟合的粗略近似值: function [fit,a,b,c] = getgauss(slice) q = 1:length(slice); b = find(slice==max(slice)); a = slice(b); temp = gradient(
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“拟合”?我是不是只是在每一行和每一列上运行它,然后进行某种交叉乘法
很遗憾,MATLAB中似乎有一个曲线拟合工具箱,我负担不起。有什么建议吗?你是在问二维拟合的数学过程吗?你可能应该做某种形式的MLE(最大似然估计),因为你知道二维拟合的形状。这个问题可能也适合。。。