Baseline removal front fingerprint raman spectra

7 visualizaciones (últimos 30 días)
Valeria Iazzetta
Valeria Iazzetta el 6 de Abr. de 2023
Comentada: Mathieu NOE el 11 de Abr. de 2023
Hi everyone, I have to pre-process this row data from the firgerprint region of the raman spectra. How can I remove the baseline? Hope someone can help me.
Thank you.

Respuesta aceptada

Mathieu NOE
Mathieu NOE el 7 de Abr. de 2023
hello
a simple code based on this FEX submission
load('ramandata.mat')
x = ramandata(:,1);
y = ramandata(:,2);
[Base, Corrected_y]=baseline(y);
figure
plot(x,y,x,Base,x,Corrected_y);
legend('raw','base','corrected');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [Base, Corrected_Spectrum]=baseline(Spectrum)
%Input
%-------
%Spectrum: vector of size (N*1)
%Output
%-------
%Base: Identified Baseline vector of size (N*1)
%Corrected_Spectrum: Corrected Spectrum vector of size (N*1)
l=length(Spectrum);
lp=ceil(0.5*l);
initial_Spectrum=[ones(lp,1)*Spectrum(1) ; Spectrum ; ones(lp,1)*Spectrum(l)];
l2=length(initial_Spectrum);
S=initial_Spectrum;
n=1;
flag1=0;
while flag1==0
n=n+2;
i=(n-1)/2;
[Baseline, stripping]=peak_stripping(S,n);
A(i)=trapz(S-Baseline);
Stripped_Spectrum{i}=Baseline;
S=Baseline;
if i>3
if A(i-1)<A(i-2) && A(i-1)<A(i)
i_min=i-1;
flag1=1;
end
end
end
Base=Stripped_Spectrum{i_min};
Corrected_Spectrum=initial_Spectrum-Base; Corrected_Spectrum=Corrected_Spectrum(lp+1:lp+l);
Base=Base(lp+1:lp+l);
end
  2 comentarios
Valeria Iazzetta
Valeria Iazzetta el 8 de Abr. de 2023
Thank you very much, it's very useful for me!
Mathieu NOE
Mathieu NOE el 11 de Abr. de 2023
as always, my pleasure !

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Chemical Spectroscopy 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