77 lines
2.6 KiB
Matlab
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") |