Added linear background fit.

This commit is contained in:
bartels-rausch committed 2024-05-23 07:07:13 +02:00
1 parent 43889de25b
commit 0c5c4f6ed9
1 file changed
+15 -15
+15 -15
View File
@@ -90,16 +90,18 @@ end
% repeat this for all columns in input.
for ii = 1:size(p.Results.DataTable(p.Results.tableSelection,:),1)
if startsWith(p.Results.mode,'linfit')
ft = fittype( 'poly1' );
elseif contains(p.Results.mode,'exponential')
ft = fittype( 'exp2' );
end
if contains(p.Results.energyScale,'kinetic')
% LINEAR FIT
if startsWith(p.Results.mode,'linfit')
disp('linfit not yet supported')
% declining background
elseif contains(p.Results.mode,'exponential')
if ~startsWith(p.Results.mode,'mean')
[xData, yData] = prepareCurveData(p.Results.DataTable(p.Results.tableSelection,:).scientaEkin_eV{ii},p.Results.DataTable(p.Results.tableSelection,:).(p.Results.tableVariable){ii});
% Set up fittype and options.
ft = fittype( 'exp2' );
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;
@@ -145,21 +147,17 @@ for ii = 1:size(p.Results.DataTable(p.Results.tableSelection,:),1)
end
b_mean = mean(p.Results.DataTable(p.Results.tableSelection,:).(p.Results.tableVariable){ii}(b_1:b_2),'omitnan');
tmp(ii,1) = cellfun(@(x) x-b_mean,p.Results.DataTable(p.Results.tableSelection,:).(p.Results.tableVariable)(ii),'UniformOutput',false);
tmp(ii,1) = cellfun(@(x) x-b_mean,p.Results.DataTable(p.Results.tableSelection,:).(p.Results.tableVariable)(ii),'UniformOutput',false); %#ok<*AGROW>
end
elseif contains(p.Results.energyScale,'binding')
if contains(p.Results.mode,'linfit')
disp('linfit not yet supported')
% MEAN
elseif contains(p.Results.mode,'exponential')
if ~startsWith(p.Results.mode,'mean')
[xData, yData] = prepareCurveData(p.Results.DataTable(p.Results.tableSelection,:).bindingEnergy_eV{ii},p.Results.DataTable(p.Results.tableSelection,:).(p.Results.tableVariable){ii});
% Set up fittype and options.
ft = fittype( 'exp2' );
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;
@@ -176,6 +174,8 @@ for ii = 1:size(p.Results.DataTable(p.Results.tableSelection,:),1)
opts = fitoptions( 'Method', 'NonlinearLeastSquares','Exclude', ~excludedPoints );
opts.Display = 'Off';
% Fit model to data.
[fitresult, ~] = fit( xData, yData, ft, opts );
if contains(p.Results.showFigures,'on')
@@ -223,7 +223,7 @@ for ii = 1:size(p.Results.DataTable(p.Results.tableSelection,:),1)
if contains(p.Results.showFigures,'on')
% Plot fit with data.
figure( 'Name', 'fit pre-edge' );
h = plot( fitresult, xData, yData, excludedPoints );
plot( fitresult, xData, yData, excludedPoints );
xlabel('Photon Energy eV')
ylabel('partial A-M.E.Y.')
grid on