Home > WaveComBox > Toolbox > Channel > Channel_ChromaticDispersion.m

Channel_ChromaticDispersion

PURPOSE ^

Simulates the impact of chromatic dispersion on the transmitted signal.

SYNOPSIS ^

function [ r ] = Channel_ChromaticDispersion( s, L_fiber, D, Para )

DESCRIPTION ^

 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]

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

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

Generated on Mon 14-Oct-2019 13:48:34 by m2html © 2005