%% ------------------------------------------------------------ % Plot: Maximum usable IM/DD bandwidth vs wavelength % ------------------------------------------------------------ % Fiber and dispersion parameters lambda0 = 1310e-9; % [m] S0 = 0.08; % [ps/(nm²·km)] L = 10000; % [m] c = physconst('lightspeed'); % Wavelength range around ZDW lambda_vec = linspace(1250e-9, 1350e-9, 200); % [m] % Compute D(lambda) using full model lambda_nm = lambda_vec * 1e9; lambda0_nm = lambda0 * 1e9; D_lambda = (S0/4) .* (lambda_nm - (lambda0_nm.^4) ./ (lambda_nm.^3)); % [ps/(nm·km)] % Convert D to [s/m²] D_si = D_lambda * 1e-6; % Compute first null frequency (f₀) for each wavelength f_null = sqrt(c*(0.5) ./ (abs(D_si).*lambda_vec.^2*L)); % [Hz] % Plot figure('Color','w'); plot(lambda_vec*1e9, f_null/1e9, 'LineWidth', 1.6); grid on; box on; xlabel('Wavelength [nm]'); ylabel('First Fading Null Frequency [GHz]'); title(sprintf('IM/DD Bandwidth Limit vs. Wavelength (L = %.1f km)', L/1000)); % Highlight useful bandwidth thresholds yline(25, '--', '25 GHz','Color',[0.4 0.4 0.4],'LabelHorizontalAlignment','left'); yline(50, '--', '50 GHz','Color',[0.2 0.6 0.2],'LabelHorizontalAlignment','left'); yline(100,'--', '100 GHz','Color',[0.6 0.2 0.2],'LabelHorizontalAlignment','left'); legend('First fading notch (f_{null})','Location','best');