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的最佳初始值。你讓我今天一整天都感覺很好!!! –