CODE to attempt a gaussian energy broadning of a spectrum

조회 수: 8 (최근 30일)
Sanchit Sharma
Sanchit Sharma 2019년 7월 8일
Respected MATLAB experts,
I am trying to perform a gaussian broadning on a energy spectrum. The final result should convert "specrum.png" to a similar form of "Exp.png". The method is explained in the "snap.jpg". In "snap.jpg" each bin is converted in a gaussian where the "μ" is the mean, and sigma of the gaussian is a polynomial function dependent on the energy i.e. x-axis (see code). Here each bin is converted to a gaussian in a for loop and I want that the second bin gaussian includes a pileup from the gaussian of first bin. Similarly, the third gaussian should include the pileup from second and first.
W_NAIF.mat is the data file which I want to process (Unbroadned spectrum).
The I am using for this is below:
E=linspace(0,10,1026); % Energy bins
for i=1:1026
sigma(i) = (-0.00789) + (0.06769)*E(i) + (0.021159)*(E(i)^2); % Sigma polynomial function
gaussFilter(i) = (1/sqrt(2*pi* (sigma(i)^2)))*exp(-((E(i)-0.5)))/(2*(sigma(i)^2)); % Gaussian function
gaussFilter(i) = gaussFilter(i) / sum (gaussFilter(i));
AAA=W_NAIF/sum(W_NAIF);
newSPECU(i) = conv(AAA(i),gaussFilter(i));
end
figure(1);
stairs(E,newSPECU);
set(gca,'YScale','log');
xlabel('Energy Deposited (MeV)');
ylabel('Counts');
title('Geant4 Gamma energy spectra (NaI NEAR - Tap Water)');
grid minor;
grid on;
ylim([1 1e6]);
Any help in this regard is hugely appreciated.
Thanks!
Best Regards,
Sanchit Sharma

답변 (0개)

카테고리

Help CenterFile Exchange에서 General Applications에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by