%% plot_dispersion_final_for_tikz lambda_nm = linspace(1240, 1360, 400); % 1. Statistical & Specification Parameters p01_L = norminv(0.01, 1317, 2); p99_L = norminv(0.99, 1317, 2); p01_S = norminv(0.01, 0.0872, 0.0012); p99_S = norminv(0.99, 0.0872, 0.0012); % Scenarios: [ZDW_min, ZDW_max], [S0_min, S0_max], [Color RGB] scenarios = { ... [1303, 1325], [0.075, 0.0925], [0.6510, 0.8078, 0.8902]; ... % 1. Wide Spec (Gray) [p01_L, p99_L], [p01_S, p99_S], [0.6, 0.6, 0.6] ... % 2. 98% Stats (Blue) }; figure('Color','w'); hold on; hp_handles = []; % 2. Calculate and Plot Envelopes for k = 1:size(scenarios, 1) Zr = scenarios{k,1}; Sr = scenarios{k,2}; col = scenarios{k,3}; [S_mesh, Z_mesh] = meshgrid(Sr, Zr); D_all = zeros(length(lambda_nm), 4); for i = 1:4 D_all(:,i) = (S_mesh(i)/4) .* (lambda_nm - (Z_mesh(i)^4)./(lambda_nm.^3)); end D_min_env = min(D_all, [], 2); D_max_env = max(D_all, [], 2); [hl, hp] = boundedline(lambda_nm, (D_min_env+D_max_env)/2, (D_max_env-D_min_env)/2, ... 'cmap','alpha', col); hp_handles(k) = hp; set(hl, 'Visible', 'off'); if k == 1 D_wide_min = D_min_env; D_wide_max = D_max_env; % ho = outlinebounds(hl, hp); % % Change properties % set(ho, 'Color', 'k', ... % Make it black % 'LineStyle', '--', ... % Make it dashed % 'LineWidth', 1, ... % Make it thin % 'HandleVisibility', 'off'); % Hide from legend % Capture Wide Spec (k=1) bounds for the TikZ measurement lines hp.FaceAlpha = 0.5; % ho = outlinebounds(hl, hp); % % Change properties % set(ho, 'Color', 'k', ... % Make it black % 'LineStyle', '--', ... % Make it dashed % 'LineWidth', 1, ... % Make it thin % 'HandleVisibility', 'off'); % Hide from legend % Capture Wide Spec (k=1) bounds for the TikZ measurement lines hp.FaceAlpha = 0.5; else hp.FaceAlpha = 0.8; end end % 3. Nominal Line D_nom = (0.0872/4) .* (lambda_nm - (1317^4)./(lambda_nm.^3)); h_nom = plot(lambda_nm, D_nom, 'k', 'LineWidth', 1,'LineStyle','-'); % 4. Minimal Lines for TikZ (Measuring Wide Spec) lambda_v = 1290; [~, idx_v] = min(abs(lambda_nm - lambda_v)); % Vertical line showing full Wide Spec dispersion range at 1290nm line([lambda_v, lambda_v], [D_wide_min(idx_v), D_wide_max(idx_v)], 'Color', 'k', 'Tag', 'VertArrow','LineWidth', 1); % Horizontal line showing Wide Spec ZDW range at D=0 % line([1303, 1325], [0, 0], 'Color', 'k', 'Tag', 'HorizArrow','LineWidth', 1); % 5. Aesthetics & Legend xlabel('Wavelength $\lambda$ [nm]', 'Interpreter', 'latex'); ylabel('$D(\lambda)$ [ps/(nm km)]', 'Interpreter', 'latex'); grid on; box on; xlim([1240 1360]); ylim([-5 5]); leg_labels = { ... '$\lambda_0 \in [1303, 1325], S_0 \in [0.075, 0.0925]$', ... '$\lambda_0 \in [1312, 1322], S_0 \in [0.084, 0.090]$', ... '$\lambda_0 = 1317, S_0 = 0.0872$'}; legend([hp_handles, h_nom], leg_labels, 'Location', 'northwest', 'Interpreter', 'latex', 'FontSize', 8); % Export command (uncomment to use) % mat2tikz_improved('C:\Users\Silas\Documents\6971e0b65b380ca6d71c837f\02_IMDD_System\tikz\dispersion\dispersion_slope.tikz')