Deconvolution of experimental peaks

Hi everybody,
I am trying to deconvolute peak from experimental data.
I have a power (mW) as a function of the temperature and I have two peaks overlapping (examples attached). I woul like to deconvolute them but I am not able to find a ay to do so.
Any suggestions?
Thanks in advance.

7 comentarios

Daniele Sonaglioni
Daniele Sonaglioni el 23 de Nov. de 2022
Movida: Star Strider el 23 de Nov. de 2022
Dear @Star Strider, thanks for your help but probably my question was not fully clear.
What I want to do is to take a single curve, i.e. ageing and bis_ageing alone, and curve-by-curve, try to deconvolute the peaks in the thermogram: in fact, if you note, there is a small pre-peak, very close to the main peak. What I want to do is to find two curves that, summed together, give the measured thermograms. Then I can use these two fitted curves to estimed the area associated with each peak because they are two different physical processes and I want to study both.
To restate in other words, I want to do the same operations you do when studying a Raman spectrum.
Star Strider
Star Strider el 23 de Nov. de 2022
I am not certain that is even possible.
Bjorn Gustavsson
Bjorn Gustavsson el 23 de Nov. de 2022
@Daniele Sonaglioni, yes. Use the suggestion I made in my answer. The mathematics of 1-D and 2-D deconvolution are similar enough that you can use the deconvblind function to do this. The problems are also similar enough that my concerns about noise amplification and Gibbs-ringing are the same.
HTH
I posted a first answer , then deleted it thinking I was completely off topic according to the others answers... but finally maybe I could still be part of the game
so my question is , do we simply want to remove the baseline (red line) and fit the remaining green curve with a two peaks function ? (nb the last action remains to be coded )
data = readmatrix('trial_ageing_deconv.txt');
% data = readmatrix('trial_bis_ageing_deconv.txt');
x = data(:,1);
y = data(:,2);
% first (main) peak
[pks,idx] = max(y);
ix = (x>x(idx)-20 & x<x(idx)+10);
x = x(ix);
y = y(ix);
[mpk,idx] = max(y); % redo it
[Base, yy]=baseline(y); % FEX : https://fr.mathworks.com/matlabcentral/fileexchange/69649-raman-spectrum-baseline-removal/
figure(1)
plot(x,y,'b-',x,Base,'r--',x,yy,'g-.');
Bjorn Gustavsson
Bjorn Gustavsson el 23 de Nov. de 2022
@Mathieu NOE, as far aas I understand that type of background/base-line removal might very much help deconvolution. But the if the "true" signal is convolved with an instrument impulse-response and all linear and shift-invariance conditions are in place one should be able to use deconvlucy (is the pont-spread-function is reasonably known) or deconvblind (which by mathemagic estimates the psf as well) to do deconvolution. If on the other hand the shape of the two peaks are known as 2 different parametrized functions it might be better to fit for those parameters and the background (as a straight-line perhaps) to the measurements.
Mathieu NOE
Mathieu NOE el 24 de Nov. de 2022
I wonder if "deconvolution" is really what we are looking for here. Somewhere I interpret the request to separate that curve into two single peak curves. A simple fit should do the job, now the question is what type of function is the most appropriate
Bjorn Gustavsson
Bjorn Gustavsson el 24 de Nov. de 2022
For the case of fitting 2 parameterized peak-functions and a background to the observations one might also have to model the point-spread of the instrument with a convolution-operation anyways. So in some sense it will still have elements of deconvolution in the solution.

Iniciar sesión para comentar.

Respuestas (1)

Bjorn Gustavsson
Bjorn Gustavsson el 22 de Nov. de 2022

0 votos

Have a look at the help and documentation of deconvblind. If you make sure that the curve you want to deconvolve and the point-spread function both are column-arrays of row-arrays it should work. But deconvolution is a tricky operation where noise-amplification and ringing (Gibbs) rapidly put a limit of how far one can get.
HTH

Preguntada:

el 22 de Nov. de 2022

Comentada:

el 24 de Nov. de 2022

Community Treasure Hunt

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

Start Hunting!

Translated by