When using linear fit, the plot somehow reversed the excluded points. This is fixed now, those data labeled excluded are indeed excluded from the fit. Second, the input is now the same for kinetic and binding energy. 2 salars define the range to be excluded (the central peak), adding additional energies add excluded regions at the edge of the spectra.

This commit is contained in:
bartels-rausch committed 2026-03-05 13:04:49 +01:00
1 parent 0e07d2972b
commit a4ba161146
1 file changed
+15 -7
+15 -7
View File
@@ -164,7 +164,7 @@ if ~any(existColumn)
end
% repeat this for all columns in input.
% repeat this for all input.
for ii = 1:size(p.Results.DataTable(p.Results.tableSelection,:),1)
if startsWith(p.Results.mode,'linfit')
@@ -240,20 +240,26 @@ for ii = 1:size(p.Results.DataTable(p.Results.tableSelection,:),1)
% Set up fittype and options.
excludedPoints = excludedata( xData, yData, 'domain',[p.Results.energyStart(1) p.Results.energyEnd(1)] );
excludedPoints = ~excludedata( xData, yData, 'domain',[p.Results.energyStart(1) p.Results.energyEnd(1)] );
if size(p.Results.energyStart,2) ==2 && size(p.Results.energyEnd,2) ==1
excludedPointsEins = excludedPoints;
clearvars excludedPoints
excludedPointsZwei = excludedata( xData, yData, 'domain',[xData(1) p.Results.energyStart(2)] );
excludedPoints = excludedPointsEins & excludedPointsZwei;
excludedPointsZwei = ~excludedata( xData, yData, 'domain',[xData(end) p.Results.energyStart(2)] );
excludedPoints = excludedPointsEins | excludedPointsZwei;
elseif size(p.Results.energyStart,2) ==2 && size(p.Results.energyEnd,2) ==2
excludedPointsEins = excludedPoints;
clearvars excludedPoints
excludedPointsZwei = excludedata( xData, yData, 'domain',[p.Results.energyStart(2) p.Results.energyEnd(2)] );
excludedPoints = excludedPointsEins & excludedPointsZwei;
excludedPointsZwei = ~excludedata( xData, yData, 'domain',[xData(end) p.Results.energyStart(2)] );
excludedPointsDrei = ~excludedata( xData, yData, 'domain',[p.Results.energyEnd(2) xData(1)] );
excludedPoints = excludedPointsEins | excludedPointsZwei |excludedPointsDrei ;
elseif size(p.Results.energyStart,2) ==1 && size(p.Results.energyEnd,2) ==2
excludedPointsEins = excludedPoints;
clearvars excludedPoints
excludedPointsZwei = ~excludedata( xData, yData, 'domain',[p.Results.energyEnd(2) xData(1)] );
excludedPoints = excludedPointsEins | excludedPointsZwei;
end
opts = fitoptions( 'Method', 'NonlinearLeastSquares','Exclude', ~excludedPoints );
opts = fitoptions( 'Method', 'NonlinearLeastSquares','Exclude', excludedPoints );
opts.Display = 'Off';
@@ -270,6 +276,8 @@ for ii = 1:size(p.Results.DataTable(p.Results.tableSelection,:),1)
ylabel( 'PE intensity', 'Interpreter', 'none' );
grid on
title(p.Results.DataTable(p.Results.tableSelection,:).name{ii},'Interpreter','none')
ax = gca;
ax.XDir = 'reverse';
end
if endsWith(p.Results.mode,'divide')
tmp{ii,1} = p.Results.DataTable(p.Results.tableSelection,:).(p.Results.tableVariable){ii}./fitresult(p.Results.DataTable(p.Results.tableSelection,:).bindingEnergy_eV{ii});