Baseline removal front fingerprint raman spectra

5 ビュー (過去 30 日間)
Valeria Iazzetta
Valeria Iazzetta 2023 年 4 月 6 日
コメント済み: Mathieu NOE 2023 年 4 月 11 日
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.

採用された回答

Mathieu NOE
Mathieu NOE 2023 年 4 月 7 日
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 件のコメント
Valeria Iazzetta
Valeria Iazzetta 2023 年 4 月 8 日
Thank you very much, it's very useful for me!
Mathieu NOE
Mathieu NOE 2023 年 4 月 11 日
as always, my pleasure !

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeChemical Spectroscopy についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by