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 visualización (últimos 30 días)
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 comentario
Matt J
Matt J el 11 de Nov. de 2022
Movida: Matt J el 11 de Nov. de 2022
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.

Iniciar sesión para comentar.

Respuesta aceptada

Matt J
Matt J el 11 de Nov. de 2022
Editada: Matt J el 11 de Nov. de 2022
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

Más respuestas (0)

Categorías

Más información sobre Interpolation en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by