0
我有以下问题:Matlab的:最小二乘拟合至2D数据集
型号:中央具有轮廓,其是高斯和洛伦兹分布的组合对称圆。为了得到模型图,只需将以下代码插入到Matlab中:
N = 501; %Matrix size
R = zeros(N,N); %Initializing matrix R
x0 = ceil(N/2); y0 = x0; %Barycenter coordinates
for i=1:N %Calculation of matrix R
for j=1:N
R(i,j) = sqrt((x0-j)^2 + (y0-i)^2);
end
end
%Model z1 and the parameters:
peak = 0.275*N; %Peak location
m = 0.3;
sigma = 0.1*N;
gamma = 15;
A1 = 1000;
A2 = 50;
z1 = (1-m)*A1/(sigma*sqrt(pi))*exp(-(abs(R - peak)).^2/sigma^2) + m*A2/pi * (gamma./((abs(R - peak1)).^2 + gamma^2));
figure('name','Show Model')
surf(z1,'EdgeColor','none','LineStyle','none','FaceLighting','phong');
所以这是“理想主义”模型。为了模拟真实的数据,我将随机噪声添加到Z1:
z2 = z1 + random('Normal',0,1,N,N);
figure('name','Show random noise data')
surf(z2,'EdgeColor','none','LineStyle','none','FaceLighting','phong');
最后通过重心相交平面的一个情节:
figure('name','Show intersecting plane with model and random noise data')
xaxis = -floor(N/2):1:floor(N/2);
intersectionline1 = z1(ceil(N/2),:);
intersectionline2 = z2(ceil(N/2),:);
plot(xaxis,intersectionline1,xaxis,intersectionline2,'.r');
Z2例如可以是我测量的实际数据集。圆圈在我的形象中的任何地方。我实际上能找到重心并得到一个平方的部分。除此之外,我可以很好地近似半径r(变量“峰值”)。
我现在的问题: 是否有可能使一个最小二乘法拟合到我的数据集,以获得参数m,西格玛,γ,高峰,A1和A2从我的模型???我不知道如果Matlab能够这样做...
在此先感谢!
谢谢!事实上,对于任何测量数据,我必须考虑如何找到fminsearch的最佳初始值。你让我今天一整天都感觉很好!!! –