function [add_noise_LT, add_noise_NT] = evalNoise(f, NT_node, LT_node, ... start_node, stop_node, tot_len, tot_Att , PSD_up, PSD_down,XTlevel); %% =========================================================================== %evalNoise - Calculates noise in LT and NT nodes from disturber in start to stop node % PSD_up and PSD_down disturbers PSD masks % % INPUT % ------ % f : Frequency axis % NT_node : NT node of disturbed modem % LT_node : LT node of disturbed modem % start_node: LT node of disturber % stop_node : NT node of disturber % tot_len : Length vector, tot_len(n)=distance to node n from the first node % tot_Att : Attenuation model in dB/km matrix % PSD_up : Disturber PSD transmitted from NT end % PSD_down : Disturber PSD transmitted from LT end % XTlevel : structure that contains NEXT,FEXT,thirdCXT values % (XTlevel.NEXT XTlevel.FEXT XTlevel.thirdCXT must have been assigned) % % OUTPUT % ------- % add_noise_LT(.NEXT .FEXT .thirdCXT): Noise to be added in LT end % add_noise_NT(.NEXT .FEXT .thirdCXT): Noise to be added in NT end % % Example(s): % % % Algorithmic details: % Step 1: Calculate noise in LT end % Step 1.1: NEXT from PSD_down % Step 1.2: FEXT from PSD_up % Step 1.3: 3CXT from PSD_up % % Step 2: Calculate noise in NT end % Step 2.1: NEXT from PSD_up % Step 2.2: FEXT from PSD_down % Step 2.3: 3CXT from PSD_down % % % Reference: % FSAN duplex simulation memo, Telia 1998 %% =========================================================================== %% =========================================================================== % Copyright (C) 1998 by Telia Research AB, Lulea, Sweden; All rights reserved. % Project : FSAN duplex model % Author(s) : Tomas Nordstrom (Tomas.B.Nordstrom@Telia.se) % : Daniel Bengtsson (Daniel.J.Bengtsson@Telia.se) % % CVS: $Id: evalNoise.m,v 1.4 1999/03/31 13:15:54 tono Exp $ %% =========================================================================== % Change History % 1998-12-16 (DaB) Created % 1998-12-22 (ToNo) Added and updated comments % 1999-01-08 (DaB) Bug fixed in DS FEXT % 1999-01-12 (DaB) Fixed bug in US NEXT % 1999-02-04 (DaB) Multiple cables allowed % 1999-02-04 (DaB) added input parameter to control XTlevel (NEXT,FEXT,thirdCXT) % 1999-02-04 (DaB) Added 3CXT noise % 1999-02-09 (DaB) Fixed NEXT FEXT thirdCXT add bug % 1999-03-10 (DaB) Rewritten to optimize speed % 1999-03-30 (DaB) Bug correction %% =========================================================================== % -------------------------------- % Step 1: Generate noise in LT end % -------------------------------- %----------------------------- % Step 1.1: NEXT from PSD_down %----------------------------- tmp=zeros(size(f)); if NT_node<=start_node, len_att=NaN; elseif LT_node=start_node)&(NT_node<=stop_node), len_fext=tot_len(NT_node)-tot_len(LT_node); len_att=tot_len(stop_node)-tot_len(NT_node); if len_fext~=0, att=tot_Att(stop_node,:)-tot_Att(LT_node,:); dB_xtalk=XTlevel.FEXT+20.*log10(f/1e6)+10.*log10(len_fext)+att; xtalk=10.^(dB_xtalk/10); tmp=xtalk.*PSD_up; end; % if elseif (start_node=stop_node), % should this be there or not?? len_att=NaN; elseif NT_node>1, len_att=abs(tot_len(NT_node)-tot_len(stop_node)); att=-abs(tot_Att(NT_node,:)-tot_Att(stop_node,:)); dB_xtalk=XTlevel.NEXT+15*log10(f./1e6)+att; xtalk=10.^(dB_xtalk/10); tmp=xtalk.*PSD_up; else len_att=NaN; end; %if add_noise_NT.NEXT=tmp; %----------------------------- % Step 2.2: FEXT from PSD_down %----------------------------- tmp=zeros(size(f)); if (LT_node>=start_node)&(NT_node<=stop_node), len_fext=tot_len(NT_node)-tot_len(LT_node); len_att=tot_len(LT_node)-tot_len(start_node); if len_fext~=0, att=tot_Att(NT_node,:)-tot_Att(start_node,:); dB_xtalk=XTlevel.FEXT+20.*log10(f/1e6)+10.*log10(len_fext)+att; xtalk=10.^(dB_xtalk/10); tmp=xtalk.*PSD_down; end; %if elseif (start_node