Simulates the impact of chromatic dispersion on the transmitted signal. function [ r ] = Channel_ChromaticDispersion( s, L_fiber, D, Para ) The function works for SISO and MIMO systems. Input arguments: s: transmit signal. Size: matrix [N, nFrameSamples] L_fiber: length of the fiber [m] D: dispersion coefficient [s/(m*m)] Para: structure containing the modulation parameters. Outputs arguments: r: received signal impacted by chromatic dispersion. Size: matrix [N, nFrameSamples]
0001 function [ r ] = Channel_ChromaticDispersion( s, L_fiber, D, Para ) 0002 % Simulates the impact of chromatic dispersion on the transmitted signal. 0003 % 0004 % function [ r ] = Channel_ChromaticDispersion( s, L_fiber, D, Para ) 0005 % 0006 % The function works for SISO and MIMO systems. 0007 % 0008 % Input arguments: 0009 % 0010 % s: transmit signal. Size: matrix [N, nFrameSamples] 0011 % 0012 % L_fiber: length of the fiber [m] 0013 % 0014 % D: dispersion coefficient [s/(m*m)] 0015 % 0016 % Para: structure containing the modulation parameters. 0017 % 0018 % Outputs arguments: 0019 % 0020 % r: received signal impacted by chromatic dispersion. Size: matrix [N, 0021 % nFrameSamples] 0022 % 0023 0024 0025 % This file is part of WaveComBox: www.wavecombox.com and is distributed under 0026 % the terms of the MIT license. See accompanying LICENSE file. 0027 % Original author: François Rottenberg, May 3, 2018. 0028 % Contributors: 0029 % Change log: 0030 0031 clight = 299792458 ; % light speed (m/s) 0032 lambda = clight/Para.CenterFrequency ; % m 0033 Ts=Para.T/Para.nSubcarriers; 0034 0035 alpha=D*lambda^2*L_fiber*pi./clight; 0036 alpha_tilde=alpha/((2*pi*Ts)^2); 0037 0038 [N, nFrameSamples]=size(s); 0039 N_fft = 2*nFrameSamples; 0040 omega_axis = (2*pi/N_fft).*(-N_fft/2:N_fft/2-1); 0041 H_cd = exp(-1i*alpha_tilde.*omega_axis.^2); 0042 0043 r=zeros(N,nFrameSamples); 0044 for index_N=1:N 0045 temp=ifft(fftshift(H_cd).*fft(s(index_N,:),N_fft),N_fft); 0046 r(index_N,:)=temp(1:nFrameSamples); 0047 end 0048 0049 0050 0051 0052 end 0053