Added more options to exclude data in background fit and made the call to nappFitGAussXps more consitent
This commit is contained in:
1 parent
81d49ccbbd
commit
f61e1113b0
2 files changed
+29
-19
No files matched your search
@@ -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
@@ -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
|
||||
|
||||
Reference in new issue
Block a user