41 lines
1.4 KiB
Matlab
41 lines
1.4 KiB
Matlab
%% ============================================================
|
|
% Minimal IM/DD Power Fading Plot
|
|
% ============================================================
|
|
|
|
|
|
%% Fiber and system parameters
|
|
lambda0 = 1310e-9; % zero-dispersion wavelength [m]
|
|
lambda = 1275e-9; % operating wavelength [m]
|
|
S0 = 0.08; % dispersion slope [ps/(nm²·km)]
|
|
L = 10e3; % fiber length [m]
|
|
c = physconst('lightspeed');
|
|
|
|
%% Derived quantities
|
|
S0_si = S0 * 1e3; % → s/m³
|
|
D_lambda = (S0/4) * (lambda*1e9 - (lambda0*1e9)^4/(lambda*1e9)^3); % ps/(nm·km)
|
|
D_si = D_lambda * 1e-6; % → s/m²
|
|
b2 = -D_si * lambda^2 / (2*pi*c); % s²/m
|
|
|
|
%% Frequency grid
|
|
f_max = 150e9;
|
|
f = linspace(0, f_max, 4000); % [Hz]
|
|
|
|
%% IM/DD transfer function (power fading)
|
|
phi = 2*pi^2 * b2 * f.^2 * L;
|
|
H = abs(cos(phi));
|
|
|
|
%% Plot
|
|
figure('Color','w');
|
|
plot(f/1e9, 10*log10(H), 'LineWidth', 1.8);
|
|
grid on; box on;
|
|
xlabel('Frequency [GHz]');
|
|
ylabel('Magnitude [dB]');
|
|
title(sprintf('IM/DD Power Fading |H| for λ = %.1f nm, L = %.1f km', lambda*1e9, L/1000));
|
|
ylim([-30 0]);
|
|
|
|
%% Mark analytic first-null frequency
|
|
f_null = sqrt(c*(0.5)/(abs(D_si)*lambda^2*L));
|
|
xline(f_null/1e9, 'r--', 'LineWidth', 1.2, ...
|
|
'Label', sprintf('f_{null}=%.1f GHz', f_null/1e9), ...
|
|
'LabelOrientation', 'horizontal', 'LabelVerticalAlignment', 'bottom');
|