Bugfixes - all analysis routines runs now on multi-parameter scans as well.

This commit is contained in:
Karthik 2025-09-07 18:42:09 +02:00
parent 228a35d22e
commit 717f2c84e9
6 changed files with 41 additions and 15 deletions

View File

@ -26,7 +26,6 @@ function results = conductSpectralAnalysis(od_imgs, scan_parameter_values, optio
% theta_min, theta_max - angular range for radial spectrum integration
% N_radial_bins - number of radial bins for S(k)
% Radial_WindowSize - window size for smoothing radial spectrum
% scan_parameter - string, type of scan parameter (used in plot text)
% font - font name for plots
%
% Outputs:
@ -55,7 +54,6 @@ function results = conductSpectralAnalysis(od_imgs, scan_parameter_values, optio
skipLivePlot = options.skipLivePlot;
skipSaveFigures = options.skipSaveFigures;
saveDirectory = options.saveDirectory;
scan_parameter = options.scan_parameter;
font = options.font;
%% ===== Initialization =====
@ -178,8 +176,14 @@ function results = conductSpectralAnalysis(od_imgs, scan_parameter_values, optio
title('OD Image', 'FontSize', 16, 'FontWeight', 'bold', 'Interpreter', 'tex', 'FontName', font);
% Annotate scan parameter
% --- Extract parameter row for this shot ---
param_row = scan_parameter_values(k,:);
% Extract parameter row for this shot
if iscell(scan_parameter_values)
% Multi-parameter scan stored as cell array of row vectors
param_row = scan_parameter_values{k};
else
% Numeric vector / matrix
param_row = scan_parameter_values(k,:);
end
% --- Ensure units list is long enough ---
if numel(unitList) < numel(param_row)
@ -189,7 +193,7 @@ function results = conductSpectralAnalysis(od_imgs, scan_parameter_values, optio
% --- Place one text object per parameter ---
xPos = 0.975; % normalized x-position (right-aligned)
yPos = 0.975; % starting y-position (top)
yStep = 0.05; % vertical spacing between multiple parameters
yStep = 0.075; % vertical spacing between multiple parameters
for j = 1:numel(param_row)
[unitSuffix, txtInterpreter] = getUnitInfo(unitList{j});

View File

@ -9,10 +9,21 @@ function results = extractAutocorrelation(theta_values, angular_spectral_distrib
delta_nkr_all(k, :) = angular_spectral_distribution{k};
end
% ===== Group images by scan parameter values =====
[unique_scan_parameter_values, ~, idx] = unique(scan_parameter_values);
N_params = length(unique_scan_parameter_values);
% ===== Determine unique scan parameter values =====
if isnumeric(scan_parameter_values) && isvector(scan_parameter_values)
% --- Single parameter case (numeric vector) ---
[unique_scan_parameter_values, ~, idx] = unique(scan_parameter_values(:), 'stable');
N_params = numel(scan_parameter_values);
elseif iscell(scan_parameter_values)
% --- Multi-parameter case (cell array of row vectors) ---
params = cell2mat(scan_parameter_values); % convert to numeric matrix
[unique_scan_parameter_values, ~, idx] = unique(params, 'rows', 'stable');
N_params = numel(scan_parameter_values);
else
error('Unsupported format for raw scan parameter values.');
end
% ===== Preallocate outputs =====
g2_curves = cell(1, N_params); % each cell: [N_reps × N_angular_bins]
g2_mean = zeros(N_params, N_angular_bins);

View File

@ -21,9 +21,20 @@ function results = extractCustomCorrelation(angular_spectral_distribution, scan_
delta_nkr_all(k, :) = angular_spectral_distribution{k};
end
% ===== Group images by scan parameter values =====
[unique_scan_parameter_values, ~, idx] = unique(scan_parameter_values);
N_params = length(unique_scan_parameter_values);
% ===== Determine unique scan parameter values =====
if isnumeric(scan_parameter_values) && isvector(scan_parameter_values)
% --- Single parameter case (numeric vector) ---
[~, ~, idx] = unique(scan_parameter_values(:), 'stable');
N_params = numel(scan_parameter_values);
elseif iscell(scan_parameter_values)
% --- Multi-parameter case (cell array of row vectors) ---
params = cell2mat(scan_parameter_values); % convert to numeric matrix
[~, ~, idx] = unique(params, 'rows', 'stable');
N_params = numel(scan_parameter_values);
else
error('Unsupported format for raw scan parameter values.');
end
% ===== Angular settings =====
angle_range = 180;

View File

@ -39,7 +39,7 @@ function [results, scan_parameter_values, scan_reference_values] = performAnalys
options.skipFullODImagesFolderUse (1,1) logical
options.showProgressBar (1,1) logical
options.measurementName (1,:) char
options.scanParameterUnits (1,:) char
options.scanParameterUnits {mustBeText} = ''
options.selectedPath (1,:) char
options.folderPath (1,:) char
options.baseDataFolder (1,:) char

View File

@ -71,7 +71,7 @@ function runInteractiveODImageViewer(od_imgs, scan_parameter_values, file_list,
hFig.Name = sprintf('Shot %d | %s', idx, shortName);
%% --- Generalized unit handling ---
% Extract parameter row for this shot
% Extract parameter row for this shot
if iscell(scan_parameter_values)
% Multi-parameter scan stored as cell array of row vectors
param_row = scan_parameter_values{idx};

View File

@ -56,7 +56,7 @@ options.skipFullODImagesFolderUse = false;
options.skipSaveData = false;
options.skipSaveFigures = true;
options.skipSaveProcessedOD = true;
options.skipLivePlot = true;
options.skipLivePlot = false;
options.showProgressBar = true;
% Extras