Added exponential fit and divide for binding energy scale. Needs testing.
This commit is contained in:
1 parent
a61f4b7141
commit
81d49ccbbd
1 file changed
+49
-8
@@ -103,16 +103,16 @@ for ii = 1:size(p.Results.DataTable(p.Results.tableSelection,:),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
|
||||
clearvars excludedPoints
|
||||
excludedPointsZwei = excludedata( xData, yData, 'domain',[xData(1) p.Results.energyStart(2)] );
|
||||
excludedPoints = excludedPointsEins & excludedPointsZwei;
|
||||
elseif size(p.Results.energyStart,2) ==2 && size(p.Results.energyEnd,2) ==2
|
||||
excludedPointsEins = excludedPoints;
|
||||
clearvars excludedPoints
|
||||
clearvars excludedPoints
|
||||
excludedPointsZwei = excludedata( xData, yData, 'domain',[p.Results.energyStart(2) p.Results.energyEnd(2)] );
|
||||
excludedPoints = excludedPointsEins & excludedPointsZwei;
|
||||
end
|
||||
|
||||
|
||||
opts = fitoptions( 'Method', 'NonlinearLeastSquares','Exclude', ~excludedPoints );
|
||||
opts.Display = 'Off';
|
||||
|
||||
@@ -121,8 +121,8 @@ for ii = 1:size(p.Results.DataTable(p.Results.tableSelection,:),1)
|
||||
if contains(p.Results.showFigures,'on')
|
||||
% Plot fit with data.
|
||||
figure( 'Name', 'untitled fit 1' );
|
||||
plot( fitresult, xData, yData, excludedPoints );
|
||||
% legend( h, 'y vs. x', 'Excluded y vs. x', 'untitled fit 1', 'Location', 'NorthEast', 'Interpreter', 'none' );
|
||||
plot( fitresult, xData, yData, excludedPoints );
|
||||
% legend( h, 'y vs. x', 'Excluded y vs. x', 'untitled fit 1', 'Location', 'NorthEast', 'Interpreter', 'none' );
|
||||
% Label axes
|
||||
xlabel( 'kinetic energy [eV]', 'Interpreter', 'none' );
|
||||
ylabel( 'PE intensity', 'Interpreter', 'none' );
|
||||
@@ -131,9 +131,9 @@ for ii = 1:size(p.Results.DataTable(p.Results.tableSelection,:),1)
|
||||
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,:).scientaEkin_eV{ii});
|
||||
|
||||
|
||||
else
|
||||
tmp{ii,1} = p.Results.DataTable(p.Results.tableSelection,:).(p.Results.tableVariable){ii}-fitresult(p.Results.DataTable(p.Results.tableSelection,:).xRayEkin_eV{ii});
|
||||
tmp{ii,1} = p.Results.DataTable(p.Results.tableSelection,:).(p.Results.tableVariable){ii}-fitresult(p.Results.DataTable(p.Results.tableSelection,:).scientaEkin_eV{ii});
|
||||
end
|
||||
elseif startsWith(p.Results.mode,'mean')
|
||||
b_1 = find(p.Results.DataTable(p.Results.tableSelection,:).scientaEkin_eV{ii} >= p.Results.energyStart,1);
|
||||
@@ -153,7 +153,48 @@ for ii = 1:size(p.Results.DataTable(p.Results.tableSelection,:),1)
|
||||
if contains(p.Results.mode,'linfit')
|
||||
disp('linfit not yet supported')
|
||||
% MEAN
|
||||
else
|
||||
|
||||
elseif contains(p.Results.mode,'exponential')
|
||||
[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;
|
||||
clearvars excludedPoints
|
||||
excludedPointsZwei = excludedata( xData, yData, 'domain',[xData(1) 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;
|
||||
end
|
||||
|
||||
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')
|
||||
% Plot fit with data.
|
||||
figure( 'Name', 'untitled fit 1' );
|
||||
plot( fitresult, xData, yData, excludedPoints );
|
||||
% legend( h, 'y vs. x', 'Excluded y vs. x', 'untitled fit 1', 'Location', 'NorthEast', 'Interpreter', 'none' );
|
||||
% Label axes
|
||||
xlabel( 'binding energy [eV]', 'Interpreter', 'none' );
|
||||
ylabel( 'PE intensity', 'Interpreter', 'none' );
|
||||
grid on
|
||||
title(p.Results.DataTable(p.Results.tableSelection,:).name{ii},'Interpreter','none')
|
||||
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});
|
||||
|
||||
else
|
||||
tmp{ii,1} = p.Results.DataTable(p.Results.tableSelection,:).(p.Results.tableVariable){ii}-fitresult(p.Results.DataTable(p.Results.tableSelection,:).bindingEnergy_eV{ii});
|
||||
end
|
||||
elseif startsWith(p.Results.mode,'mean')
|
||||
b_1 = find(p.Results.DataTable(p.Results.tableSelection,:).bindingEnergy_eV{ii} <= p.Results.energyStart,1);
|
||||
b_2 = find(p.Results.DataTable(p.Results.tableSelection,:).bindingEnergy_eV{ii} <= p.Results.energyEnd,1);
|
||||
|
||||
|
||||
Reference in new issue
Block a user