Files
imdd_silas/Functions/Theory/dispersion_contour.m
2026-03-12 17:26:13 +01:00

77 lines
2.6 KiB
Matlab

% Festen Betriebsparameter
lambda = 1290; % nm
L = 1; % km
mu_zwd = 1317; % nm
sigma_zwd = 2; % nm
mu_s0 = 0.0872; % ps / nm2 km
sigma_s0 = 0.0012; % ps / nm2 km
rho = -0.5; % Korrelation
% Gitter für lambda0 und S0
lambda0_vec = linspace(mu_zwd-10, mu_zwd+10, 100);
S0_vec = linspace(mu_s0-0.01, mu_s0+0.01, 100);
% Korrigierte meshgrid Reihenfolge
[S0, Lambda0] = meshgrid(S0_vec, lambda0_vec);
% Dispersion berechnen
D = (S0./4) .* ( lambda - (Lambda0.^4)./(lambda^3) ) * L;
%% 2D-Konturplot
figure('Color','w');
hold on
% --- 1. Hintergrund: Dispersions-Konturlinien (Gerundet für TikZ) ---
numLevels_D = 10;
% Erzeuge glatte, auf 1 Nachkommastelle gerundete Werte
levels_D = round(linspace(min(D(:)), max(D(:)), numLevels_D), 1);
levels_D = unique(levels_D); % Falls durch Rundung doppelte Werte entstehen
% Colormap in der Länge der verbliebenen Level erstellen
cmap_bg = cbrewer2('Blues', length(levels_D));
for i = 1:length(levels_D)
% WICHTIG: Das Level als [Wert, Wert] übergeben!
[C,h] = contour(S0, Lambda0, D, [levels_D(i), levels_D(i)], ...
'Color', cmap_bg(i,:),...
'LineWidth', 1.5, ...
'ShowText', 'on', ...
'LabelFormat', '%0.1f');
h.LabelColor = [0,0,0];
end
% --- NEU: Parameter für die Verteilungen ---
mu_zwd = 1317; % nm
sigma_zwd = 2; % nm
mu_s0 = 0.0872; % ps / nm2 km
sigma_s0 = 0.0012; % ps / nm2 km
rho = -0.5; % Korrelation
% --- 3. Randverteilungen (1D Gauss) an den Achsen ---
s0_vals = linspace(min(S0_vec), max(S0_vec), 500);
gauss_s0 = exp(-0.5*((s0_vals - mu_s0)/sigma_s0).^2);
scale_s0 = 4; % Skalierung für die Höhe in der Ansicht
plot(s0_vals, min(lambda0_vec) + gauss_s0 * scale_s0, 'k', 'LineWidth', 2);
zwd_vals = linspace(min(lambda0_vec), max(lambda0_vec), 500);
gauss_zwd = exp(-0.5*((zwd_vals - mu_zwd)/sigma_zwd).^2);
scale_zwd = 0.005; % Skalierung für die Auslenkung in der Ansicht
plot(min(S0_vec) + gauss_zwd * scale_zwd, zwd_vals, 'k', 'LineWidth', 2);
% Hilfslinien für die Mittelwerte
xline(mu_s0, '--k', 'Alpha', 0.4);
yline(mu_zwd, '--k', 'Alpha', 0.4);
% --- Achsenbeschriftung, Titel & Formatierung ---
xlabel('S0 ', 'FontSize', 12);
ylabel('ZDW [nm]', 'FontSize', 12);
% title(sprintf('Dispersion: %d km; %d nm', L, lambda), 'FontSize', 14);
axis([min(S0_vec) max(S0_vec) min(lambda0_vec) max(lambda0_vec)]);
grid on
hold off
%% Für den LaTeX Export
mat2tikz_improved("C:/Users/Silas/Documents/6971e0b65b380ca6d71c837f/02_IMDD_System/tikz/dispersion/dispersion_contour.tikz")