Simulates the impact of phase noise on the received 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] linewidth: phase noise linewidth [Hz] Para: structure containing the modulation parameters. Outputs arguments: r: received signal impacted by phase noise. Size: matrix [N, nFrameSamples]
0001 function [ r ] = Channel_PhaseNoise( s, linewidth, Para ) 0002 % Simulates the impact of phase noise on the received 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 % linewidth: phase noise linewidth [Hz] 0013 % 0014 % Para: structure containing the modulation parameters. 0015 % 0016 % Outputs arguments: 0017 % 0018 % r: received signal impacted by phase noise. Size: matrix [N, 0019 % nFrameSamples] 0020 % 0021 0022 % This file is part of WaveComBox: www.wavecombox.com and is distributed under 0023 % the terms of the MIT license. See accompanying LICENSE file. 0024 % Original author: François Rottenberg, May 3, 2018. 0025 % Contributors: 0026 % Change log: 0027 0028 0029 T_s = Para.T/Para.nSubcarriers; 0030 sigma_nu_2=2*pi* linewidth *T_s; 0031 0032 [N, nFrameSamples]=size(s); 0033 r=zeros(N,nFrameSamples); 0034 for index_N=1:N 0035 delta_phase = sqrt(sigma_nu_2)*randn(1, length(s)); 0036 phase_noise = cumsum(delta_phase); 0037 r (index_N,:)= s(index_N,:).*exp(1i.*phase_noise); 0038 end 0039 0040 end 0041