Calculations/Data-Analyzer/+Scripts/Comparison/loadAndCompareASDCumulants.m

159 lines
5.9 KiB
Matlab
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

%% ===== BEC-Droplets/Stripes: Combined Mean & Variance Across α =====
clear; clc; close all;
% ===== User Settings =====
dataFiles = { ...
'C:\Users\Karthik-OfficePC\Documents\GitRepositories\Calculations\Data-Analyzer\+Scripts\Comparison\Cumulants\BECToDroplets_MeanVariance_AllThetaData.mat', ...
'C:\Users\Karthik-OfficePC\Documents\GitRepositories\Calculations\Data-Analyzer\+Scripts\Comparison\Cumulants\BECToStripes_MeanVariance_AllThetaData.mat' ...
};
desiredTheta = [pi/6, pi/3]; % radians
% Use your pi-fraction formatter for labels
thetaLabels = arrayfun(@(th) ...
['\theta = ' strrep(thetaToPiStr(th), '\\pi', '\pi')], ...
desiredTheta, 'UniformOutput', false);
fontName = 'Bahnschrift';
fontSize = 14;
% ===== Load Cumulant Data =====
allCumulants = [];
for i = 1:numel(dataFiles)
S = load(dataFiles{i});
data = S.cumulantData;
if isempty(allCumulants)
allCumulants = data;
else
allCumulants = [allCumulants, data]; %#ok<AGROW>
end
end
% ===== Colormap (coolwarm trimmed) =====
fullCmap = Colormaps.coolwarm(256);
blueSide = fullCmap(1:100,:);
redSide = fullCmap(157:end,:);
trimmedCmap = [blueSide; redSide];
indices = round(linspace(1, size(trimmedCmap,1), size(allCumulants,2)));
cmap = trimmedCmap(indices,:);
% ===== Plot & Save One Figure Per θ =====
saveDir = fileparts(mfilename('fullpath'));
for t = 1:numel(desiredTheta)
fig = figure(t);
set(fig, 'Color','w','Position',[100 100 1250 550]);
tLayout = tiledlayout(1,2,'TileSpacing','Compact','Padding','Compact');
sgtitle(sprintf('%s', thetaLabels{t}), ...
'FontName',fontName,'FontSize',fontSize+4);
% --- κ1 Mean ---
ax1 = nexttile; hold(ax1,'on');
for s = 1:size(allCumulants,2)
plot(ax1, allCumulants(t,s).scan_vals, allCumulants(t,s).mean, '-o', ...
'Color', cmap(s,:), 'LineWidth', 2, 'MarkerSize', 8, ...
'MarkerFaceColor', cmap(s,:), 'DisplayName', allCumulants(t,s).label);
end
xlabel(ax1,'B (G)'); ylabel(ax1,'\kappa_1');
title(ax1,'Mean'); grid(ax1,'on');
legend(ax1,'Location','northeast');
set(ax1,'FontName',fontName,'FontSize',fontSize);
% --- κ2 Variance ---
ax2 = nexttile; hold(ax2,'on');
for s = 1:size(allCumulants,2)
plot(ax2, allCumulants(t,s).scan_vals, allCumulants(t,s).variance, '-o', ...
'Color', cmap(s,:), 'LineWidth', 2, 'MarkerSize', 8, ...
'MarkerFaceColor', cmap(s,:), 'DisplayName', allCumulants(t,s).label);
end
xlabel(ax2,'B (G)'); ylabel(ax2,'\kappa_2');
title(ax2,'Variance'); grid(ax2,'on');
legend(ax2,'Location','northeast');
set(ax2,'FontName',fontName,'FontSize',fontSize);
end
%% ===== Droplets-Stripes: Combined Mean & Variance Across α =====
clear; clc; close all;
% ---- User: path to saved .mat from previous script ----
% loadFile = 'C:\Users\Karthik-OfficePC\Documents\GitRepositories\Calculations\Data-Analyzer\+Scripts\Comparison\Cumulants\DropletsToStripes_MeanVariance_AllThetaData.mat';
loadFile = 'C:\Users\Karthik-OfficePC\Documents\GitRepositories\Calculations\Data-Analyzer\+Scripts\Comparison\Cumulants\StripesToDroplets_MeanVariance_AllThetaData.mat';
S = load(loadFile);
cumulantData = S.cumulantData;
options = S.options;
N_theta = size(cumulantData,1);
N_data = size(cumulantData,2);
% --- Colormap (trimmed coolwarm) ---
fullCmap = Colormaps.coolwarm(256);
blueSide = fullCmap(1:100,:);
redSide = fullCmap(157:end,:);
trimmedCmap = [blueSide; redSide];
cmap = trimmedCmap(round(linspace(1,size(trimmedCmap,1),N_data)), :);
for t = 1:N_theta
% ===== θ label in π format =====
thetaRad = cumulantData(t,1).theta;
thetaStr = thetaToPiStr(thetaRad); % 'pi/3', '2pi/3', etc.
thetaStr = strrep(thetaStr,'\\pi','\pi'); % latex escape fix
fig = figure(t);
set(fig, 'Color','w','Position',[100 100 1200 550]);
tl = tiledlayout(1,2,'TileSpacing','Compact','Padding','Compact');
sgtitle(['\theta = ' thetaStr], ...
'FontName', options.font, 'FontSize', 18);
% --- Mean κ1 ---
ax1 = nexttile; hold(ax1,'on');
for d = 1:N_data
plot(ax1, cumulantData(t,d).scan_vals, cumulantData(t,d).mean, '-o', ...
'Color', cmap(d,:), 'LineWidth', 2, 'MarkerSize', 8, ...
'MarkerFaceColor', cmap(d,:), 'DisplayName', cumulantData(t,d).label);
end
xlabel(ax1, '\alpha (degrees)', 'FontName', options.font, 'FontSize', 14);
ylabel(ax1, '\kappa_1', 'FontName', options.font, 'FontSize', 14);
title(ax1, 'Mean', 'FontName', options.font, 'FontSize', 16);
grid(ax1,'on'); legend(ax1,'Location','northwest','FontSize',12);
set(ax1,'FontName',options.font,'FontSize',14);
% --- Variance κ2 ---
ax2 = nexttile; hold(ax2,'on');
for d = 1:N_data
plot(ax2, cumulantData(t,d).scan_vals, cumulantData(t,d).variance, '-o', ...
'Color', cmap(d,:), 'LineWidth', 2, 'MarkerSize', 8, ...
'MarkerFaceColor', cmap(d,:), 'DisplayName', cumulantData(t,d).label);
end
xlabel(ax2, '\alpha (degrees)', 'FontName', options.font, 'FontSize', 14);
ylabel(ax2, '\kappa_2', 'FontName', options.font, 'FontSize', 14);
title(ax2, 'Variance', 'FontName', options.font, 'FontSize', 16);
grid(ax2,'on'); legend(ax2,'Location','northwest','FontSize',12);
set(ax2,'FontName',options.font,'FontSize',14);
end
%% ===== Helper function to format theta in terms of pi =====
function thetaStr = thetaToPiStr(thetaRad)
% Convert theta in radians to a string like 'pi/3' or 'pi' or '2*pi/3'
[N,D] = rat(thetaRad/pi,1e-6); % rational approximation
if N == 0
thetaStr = '0';
elseif D == 1
if N==1
thetaStr = '\\pi';
else
thetaStr = sprintf('%d\\pi',N);
end
else
if N == 1
thetaStr = sprintf('\\pi/%d',D); % omit 1 in numerator
else
thetaStr = sprintf('%d\\pi/%d',N,D);
end
end
end