CODE to attempt a gaussian energy broadning of a spectrum

5 次查看(过去 30 天)
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