Centre X-Y data so that the highest value of Ys is at the centre of X. And then average the curve to fit into gaussian.

1 次查看(过去 30 天)
Hello, I have X-Y data of a curves (one coloumn for X and 4 columns for Y). I want to centre the Y data so that the highest value of Y gets to the centre of X. Right now the curves are haphazurd and I ant to make to symmetrical. I also want to fit the average of the curves into a gaussian profile.
Any help is greatly appreciated.
  1 个评论
Matt J
Matt J 2022-11-11
移动:Matt J 2022-11-11
I think it would be better just to fit a gaussian (e.g. using fit) to each pair (X,Y(:,i)). Then the fitted mean in each column would tell you were the maximum should be.

请先登录,再进行评论。

采纳的回答

Matt J
Matt J 2022-11-11
编辑:Matt J 2022-11-11
Using gaussfitn from this FEX download,
you can do a simultaneous fit of all the columns:
[X,Y{1:4}]=readvars('X-Y.xlsx'); Y=cell2mat(Y); Y=Y(:);
t0=fminsearch( @(t)objfunc(t,X,Y) ,zeros(1,4) );
[~,dX,p]=objfunc(t0,X,Y);
f=@(x) p{1} + p{2}*exp( -0.5 * (x-p{3}).^2/p{4} ); %fitted Gaussian
[dX,is]=sort(dX);
Y=Y(is);
plot(dX,Y,'x',dX,f(dX)); shg
function [fval,dX,params]=objfunc(t,X,Y)
dX=X-t(:).'; dX=dX(:);
[params,fval]=gaussfitn(dX,Y,[],[],[],'Display','off');
end

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Interpolation 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by