Added more options to exclude data in background fit and made the call to nappFitGAussXps more consitent

This commit is contained in:
bartels-rausch committed 2024-02-20 15:17:04 +01:00
1 parent 81d49ccbbd
commit f61e1113b0
2 files changed
+29 -19

No files matched your search

+4 -3
View File
@@ -109,8 +109,9 @@ for ii = 1:size(p.Results.DataTable(p.Results.tableSelection,:),1)
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(1) p.Results.energyStart(2)] );
excludedPointsDrei = excludedata( xData, yData, 'domain',[p.Results.energyEnd(2) xData(end)] );
excludedPoints = excludedPointsEins & excludedPointsZwei & excludedPointsDrei;
end
opts = fitoptions( 'Method', 'NonlinearLeastSquares','Exclude', ~excludedPoints );
@@ -121,7 +122,7 @@ 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 );
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' );
+25 -16
View File
@@ -199,7 +199,7 @@ if matches(p.Results.mode,'position')
p.Results.FitParameter.peakAreaLowerBond(1,2) p.Results.FitParameter.peakWidthLowerBond(1,2) ... % Gauss peak 2
p.Results.FitParameter.peakAreaLowerBond(1,3) p.Results.FitParameter.peakWidthLowerBond(1,3) ... % Gauss peak 3
p.Results.FitParameter.peakAreaLowerBond(1,4) p.Results.FitParameter.peakWidthLowerBond(1,4) ... % Gauss peak 4
0 0]; % linear background
-Inf 0]; % linear background
% upper bond
ub = [p.Results.FitParameter.peakAreaUpperBond(1,1) p.Results.FitParameter.peakWidthUpperBond(1,1) p.Results.FitParameter.peakPosUpperBond(1,1) ... % Gauss peak 1
p.Results.FitParameter.peakAreaUpperBond(1,2) p.Results.FitParameter.peakWidthUpperBond(1,2) ... % Gauss peak 2
@@ -225,7 +225,7 @@ elseif matches(p.Results.mode,'unconstrained')
p.Results.FitParameter.peakAreaLowerBond(1,2) p.Results.FitParameter.peakWidthLowerBond(1,2) p.Results.FitParameter.peakPosLowerBond(1,2)... % Gauss peak 2
p.Results.FitParameter.peakAreaLowerBond(1,3) p.Results.FitParameter.peakWidthLowerBond(1,3) p.Results.FitParameter.peakPosLowerBond(1,3)... % Gauss peak 3
p.Results.FitParameter.peakAreaLowerBond(1,4) p.Results.FitParameter.peakWidthLowerBond(1,4) p.Results.FitParameter.peakPosLowerBond(1,4)... % Gauss peak 4
0 0]; % linear background
-Inf 0]; % linear background
% upper bond
ub = [p.Results.FitParameter.peakAreaUpperBond(1,1) p.Results.FitParameter.peakWidthUpperBond(1,1) p.Results.FitParameter.peakPosUpperBond(1,1) ... % Gauss peak 1
p.Results.FitParameter.peakAreaUpperBond(1,2) p.Results.FitParameter.peakWidthUpperBond(1,2) p.Results.FitParameter.peakPosUpperBond(1,2)... % Gauss peak 2
@@ -254,7 +254,7 @@ elseif matches(p.Results.mode,'widthPosition')
p.Results.FitParameter.peakAreaLowerBond(1,3) ... % Gauss peak 3
p.Results.FitParameter.peakAreaLowerBond(1,4) ...
p.Results.FitParameter.peakAreaLowerBond(1,5) ... % Gauss peak 5
0 0]; % linear background
-Inf -Inf]; % linear background
% upper bond
ub = [p.Results.FitParameter.peakAreaUpperBond(1,1) p.Results.FitParameter.peakWidthUpperBond(1,1) p.Results.FitParameter.peakPosUpperBond(1,1) ... % Gauss peak 1
p.Results.FitParameter.peakAreaUpperBond(1,2) ... % Gauss peak 2
@@ -278,15 +278,15 @@ elseif matches(p.Results.mode,'width')
0 0]; % linear background
% lower bonds
lb = [p.Results.FitParameter.peakAreaLowerBond(1,1) p.Results.FitParameter.peakWidthLowerBond(1,1) p.Results.FitParameter.peakPosLowerBond(1,1) ... % Gauss peak 1
p.Results.FitParameter.peakAreaLowerBond(1,2) p.Results.FitParameter.peakWidthLowerBond(1,2) ... % Gauss peak 2
p.Results.FitParameter.peakAreaLowerBond(1,3) p.Results.FitParameter.peakWidthLowerBond(1,3) ... % Gauss peak 3
p.Results.FitParameter.peakAreaLowerBond(1,4) p.Results.FitParameter.peakWidthLowerBond(1,4) ... % Gauss peak 4
0 0]; % linear background
p.Results.FitParameter.peakAreaLowerBond(1,2) p.Results.FitParameter.peakPos(1,2) ... % Gauss peak 2
p.Results.FitParameter.peakAreaLowerBond(1,3) p.Results.FitParameter.peakPos(1,3) ... % Gauss peak 3
p.Results.FitParameter.peakAreaLowerBond(1,4) p.Results.FitParameter.peakPos(1,4) ... % Gauss peak 4
-Inf -Inf]; % linear background
% upper bond
ub = [p.Results.FitParameter.peakAreaUpperBond(1,1) p.Results.FitParameter.peakWidthUpperBond(1,1) p.Results.FitParameter.peakPosUpperBond(1,1) ... % Gauss peak 1
p.Results.FitParameter.peakAreaUpperBond(1,2) p.Results.FitParameter.peakWidthUpperBond(1,2) ... % Gauss peak 2
p.Results.FitParameter.peakAreaUpperBond(1,3) p.Results.FitParameter.peakWidthUpperBond(1,3) ... % Gauss peak 3
p.Results.FitParameter.peakAreaUpperBond(1,4) p.Results.FitParameter.peakWidthUpperBond(1,4) ... % Gauss peak 4
p.Results.FitParameter.peakAreaUpperBond(1,2) p.Results.FitParameter.peakPos(1,2) ... % Gauss peak 2
p.Results.FitParameter.peakAreaUpperBond(1,3) p.Results.FitParameter.peakPos(1,3) ... % Gauss peak 3
p.Results.FitParameter.peakAreaUpperBond(1,4) p.Results.FitParameter.peakPos(1,4) ... % Gauss peak 4
Inf Inf]; % linear background
elseif matches(p.Results.mode,'unconstrainedAndWidthPosition') % Novum, also the distance between peaks is a fit parameter. [Gauss = area/(width*sqrt(pi/2)) * exp(-2*(x-position)^2/width^2)]
@@ -312,7 +312,7 @@ elseif matches(p.Results.mode,'unconstrainedAndWidthPosition') % Novum, also the
p.Results.FitParameter.peakAreaLowerBond(1,3) p.Results.FitParameter.peakWidthLowerBond(1,2) p.Results.FitParameter.peakPosLowerBond(1,3) ... % Gauss peak 3
p.Results.FitParameter.peakAreaLowerBond(1,4) p.Results.FitParameter.peakPosLowerBond(1,4) ...
p.Results.FitParameter.peakAreaLowerBond(1,5) p.Results.FitParameter.peakPosLowerBond(1,5) ...% Gauss peak 4
0 0 ... % linear background
-Inf -Inf ... % linear background
p.Results.FitParameter.peakPosLowerBond(1,1)];
% upper bond
@@ -340,7 +340,7 @@ elseif matches(p.Results.mode,'unconstrainedAndWidthPosition') % Novum, also the
p.Results.FitParameter.peakArea(1,3) p.Results.FitParameter.peakWidth(1,2) p.Results.FitParameter.peakPos(1,3)... % Gauss peak 3
p.Results.FitParameter.peakArea(1,4) p.Results.FitParameter.peakPos(1,4)... % Gauss peak 4
p.Results.FitParameter.peakArea(1,5) p.Results.FitParameter.peakPos(1,5)... % Gauss peak 5
1 0 ... % linear background
0 0 ... % linear background
p.Results.FitParameter.peakPos(1,1)];
% lower bonds
lb = [p.Results.FitParameter.peakAreaLowerBond(1,1) p.Results.FitParameter.peakWidthLowerBond(1,1) p.Results.FitParameter.peakPosLowerBond(1,2) ... % Gauss peak 1
@@ -440,9 +440,9 @@ for ii = 1:size(DataTable(p.Results.tableSelection,:),1)
elseif matches(p.Results.mode,'width')
B = [tmpB(1) tmpB(2) tmpB(3)...
tmpB(4) tmpB(2) tmpB(5)...
tmpB(6) tmpB(2) tmpB(8)...
tmpB(9) tmpB(2) tmpB(10)...
tmpB(11) tmpB(12)...
tmpB(6) tmpB(2) tmpB(7)...
tmpB(8) tmpB(2) tmpB(9)...
tmpB(10) tmpB(11)...
NaN NaN NaN];
elseif matches(p.Results.mode,'unconstrainedAndWidthPosition')
B = [tmpB(1) tmpB(2) tmpB(3)+tmpB(14)...
@@ -585,7 +585,7 @@ for ii = 1:size(DataTable(p.Results.tableSelection,:),1)
resultsPeakPos(ii,:) = [B(3), B(6), B(9), B(12), B(16)] ; %#ok<*AGROW>
resultsPeakFWHW(ii,:) = [B(2).*sqrt(log(4)), B(5).*sqrt(log(4)), B(8).*sqrt(log(4)), B(11).*sqrt(log(4)), B(17).*sqrt(log(4))] ;
resultsPeakArea(ii,:) = [B(1), B(4), B(7), B(10) B(15)] ;
% resultsBkgrd(ii,:) = [B(13), B(14)] ;
resultsBkgrd(ii,:) = [B(13), B(14)] ;
% close the fiting progess window
fh = findobj( 'Type', 'Figure', 'Name', 'GlobalSearch');
close(fh)
@@ -606,11 +606,16 @@ try
if ~any(existColumn)
DataTable.peakFWHM = NaN(size(DataTable,1),size(resultsPeakFWHW,2));
end
existColumn = strcmp('peakBackground',DataTable.Properties.VariableNames);
if ~any(existColumn)
DataTable.peakBackground = NaN(size(DataTable,1),size(resultsBkgrd,2));
end
%if contains(p.Results.energyScale,'binding')
DataTable(p.Results.tableSelection,:).peakPosition = resultsPeakPos(:,:);
%end
DataTable(p.Results.tableSelection,:).peakFWHM = resultsPeakFWHW(:,:);
DataTable(p.Results.tableSelection,:).peakArea = resultsPeakArea(:,:);
DataTable(p.Results.tableSelection,:).peakBackground = resultsBkgrd(:,:);
catch
disp('Could not write results to table. Writing only 4 entries')
existColumn = strcmp('peakPosition',DataTable.Properties.VariableNames);
@@ -625,6 +630,10 @@ catch
if ~any(existColumn)
DataTable.peakFWHM = NaN(size(DataTable,1),size(resultsPeakFWHW,2));
end
existColumn = strcmp('peakBackground',DataTable.Properties.VariableNames);
if ~any(existColumn)
DataTable.peakBackground = NaN(size(DataTable,1),size(resultsPeakFWHW,2));
end
%if contains(p.Results.energyScale,'binding')
DataTable(p.Results.tableSelection,:).peakPosition = resultsPeakPos(:,1:4);
%end