Added linear background fit.
This commit is contained in:
1 parent
43889de25b
commit
0c5c4f6ed9
1 file changed
+15
-15
+15
-15
@@ -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
|
||||
|
||||
Reference in new issue
Block a user