% Uplink Interferences fprintf('Uplink interferences \n'); % The worst and best latitude for each zone concerning uplink interferences l=[53*pi/180;45*pi/180;43*pi/180;42*pi/180;32*pi/180;36*pi/180]; % The worst and best relative longitude for each zone concerning uplink interferences L=[-6*pi/180;-2*pi/180;11*pi/180;5*pi/180;-5*pi/180;-2*pi/180]; % Initialisation of the variables: Station=[1:6]; CoverNI_Up_dB=[1:6;1:6;1:6;1:6;1:6;1:6]; CoverNI_Up_Min_dB=0; DeltaLFS_dB=[1:6;1:6;1:6;1:6;1:6;1:6]; for i=1:6 for j=1:6 CoverNI_Up_dB(i,j)=0; DeltaLFS_dB(i,j)=0; end end % Concerning uplink interferences, supposing that the farest stations at the edge of the zone % have one dB less gain antenna compared to the stations nearest of the boresight. G=[-3,-2,-3,-2,-3,-2]; % Calculation of all possible uplink interferences: for i=1:6 for j=1:6 CosPhiX=cos(l(i))*cos(L(i)); CosPhiY=cos(l(j))*cos(L(j)); % use of formula (R/Ro)^2=1+0,42(1-cos(Phi)) % calculation of (distance StationX-Sat)^2/(distance StationY-Sat)^2 DeltaLFS=(1.42-0.42*CosPhiX)/(1.42-0.42*CosPhiY); % Cx=Px*Gw/Lw % Ix=Cy*10^(-Xsat/10)=Py*Gu/Lu*10^(-Xsat/10) % Jx=Qx*Gu/Lu=Py*10^(-Xes/10)*Gu/Lu % as Px=Py % Cx/(Ix+Jx)=Gw/Gu*Lu/Lw*1/(10^(-Xsat/10)+10^(-Xes/10)) % as Lw/Lu=DeltaLFS CoverNI_Up=10^(G(i)/10)/(10^(G(j)/10))*1/(DeltaLFS*(10^-2.5+10^-3.5)); CoverNI_Up_dB(i,j)=10*log10(CoverNI_Up); DeltaLFS_dB(i,j)=10*log10(DeltaLFS); if CoverNI_Up_Min_dB==0 %for the first loop CoverNI_Up_Min_dB=CoverNI_Up_dB(i,j); WantedStation=i; UnwantedStation=j; end if CoverNI_Up_dB(i,j)<=CoverNI_Up_Min_dB CoverNI_Up_Min_dB=CoverNI_Up_dB(i,j); WantedStation=i; UnwantedStation=j; end end end % keep the min and max CoverNI_Up_dB MinCoverNI_Up_dB=min(min(CoverNI_Up_dB)); MaxCoverNI_Up_dB=max(max(CoverNI_Up_dB)); % create an array with minimum C/N)I uplink between two zones interferences AA-AB-AC-BA-BB-BC-CA-CB-CC % for instance notation AB is related to the wanted signal A interferd by an unwanted signal from a station of zone B InterferenceUpZonesArray(1)=min(CoverNI_Up_dB(1,2),CoverNI_Up_dB(2,1));%AA InterferenceUpZonesArray(2)=min(CoverNI_Up_dB(1,3),min(CoverNI_Up_dB(1,4),min(CoverNI_Up_dB(2,3),CoverNI_Up_dB(2,4))));%AB InterferenceUpZonesArray(3)=min(CoverNI_Up_dB(1,5),min(CoverNI_Up_dB(1,6),min(CoverNI_Up_dB(2,5),CoverNI_Up_dB(2,6))));%AC InterferenceUpZonesArray(4)=min(CoverNI_Up_dB(3,1),min(CoverNI_Up_dB(3,2),min(CoverNI_Up_dB(4,1),CoverNI_Up_dB(4,2))));%BA InterferenceUpZonesArray(5)=min(CoverNI_Up_dB(3,4),CoverNI_Up_dB(4,3));%BB InterferenceUpZonesArray(6)=min(CoverNI_Up_dB(3,5),min(CoverNI_Up_dB(3,6),min(CoverNI_Up_dB(4,5),CoverNI_Up_dB(4,6))));%BC InterferenceUpZonesArray(7)=min(CoverNI_Up_dB(5,1),min(CoverNI_Up_dB(5,2),min(CoverNI_Up_dB(6,1),CoverNI_Up_dB(6,2))));%CA InterferenceUpZonesArray(8)=min(CoverNI_Up_dB(5,3),min(CoverNI_Up_dB(5,4),min(CoverNI_Up_dB(6,3),CoverNI_Up_dB(6,4))));%CB InterferenceUpZonesArray(9)=min(CoverNI_Up_dB(5,6),CoverNI_Up_dB(6,5));%CC %keep the min and max value of InterferenceUpZonesArray MinInterferenceUpZones=min(InterferenceUpZonesArray); MaxInterferenceUpZones=max(InterferenceUpZonesArray); % Display the result fprintf('relative to fig1 CoverNI_Up_dB is a matrix where rows are the wanted stations and columns the interfering stations'); fprintf('ex: CoverNI_Up_dB(i,j) the wanted stations i is interfered by unwanted stations j'); CoverNI_Up_dB fprintf('The worst case for the uplink interferences is when the unwanted station %d interfers with the wanted station %d \n In this case C/N)inter=%d \n',UnwantedStation,WantedStation,CoverNI_Up_Min_dB); fprintf('relativ to fig1 InterferenceUpZonesArray correspond to interferences between zone in the order AA, AB, AC, BA, BB, BC, CA, CB, CC'); InterferenceUpZonesArray figure(1) l=[1:6;1:6;1:6;1:6;1:6;1:6].' subplot(2,1,1);plot(l,CoverNI_Up_dB); set(gca,'XTick',[1;2;3;4;5;6]) set(gca,'XTickLabel',{'station1';'station2';'station3';'station4';'station5';'station6'}) set(gca,'ylim',[23 26.5]) ylabel('C/N)I uplink') title('C/N)I uplink when station i interfers on station j') legend('station 1 on station j','station 2 on station j','station 3 on station j','station 4 on station j','station 5 on station j','station 6 on station j') text(6,MaxCoverNI_Up_dB,'MaxCoverNI_Up_dB =25.9 dB\rightarrow','HorizontalAlignment','right','FontSize',10) text(1,MinCoverNI_Up_dB,'\leftarrowMinCoverNI_Up_dB =23.2 dB','HorizontalAlignment','left','FontSize',10) subplot(2,1,2);plot(InterferenceUpZonesArray) set(gca,'XTick',[1;2;3;4;5;6;7;8;9]) set(gca,'XTickLabel',{'AA';'AB';'AC';'BA';'BB';'BC';'CA';'CB';'CC'}) xlabel('zones interfering') ylabel('C/N)I uplink') title('C/N)I uplink when the zone of the second letter are interfering with the wanted signal of the zone of the first letter') text(7,MaxInterferenceUpZones,'MaxInterferenceUpZones =23.8 dB\rightarrow','HorizontalAlignment','right','FontSize',10) text(3,MinInterferenceUpZones,'\leftarrowMinCoverNI_Up_dB =23.2 dB','HorizontalAlignment','left','FontSize',10) % Dwlink Interferences fprintf('Downlink interferences \n'); % Initialisation of the variables: Station=[1:6]; CoverNI_Dn_dB=[1:6;1:6;1:6;1:6;1:6;1:6]; GainRatio_dB=[1:6;1:6;1:6;1:6;1:6;1:6]; for i=1:6 for j=1:6 CoverNI_Dn_dB(i,j)=0; GainRatio_dB(i,j)=0; end end CoverNI_Dw_Min_dB=0; % Concerning downlink interferences, supposing that the gain ratio of the satellite's antenna % between the wanted and the unwanted signal is: % --> (Gmax-3dB)/(Gmax-3dB)=O dB if the wanted and unwanted are sent towards the same downlink beam. % --> (Gmax-3dB)/(Gmax-20dB)=17 dB if the wanted and unwanted are sent towards different downlink beams. GwOverGu_SameBeam_dB=0; GwOverGu_DifferentBeam_dB=17; for i=1:6 for j=1:6 GainRatio_dB(i,j)=GwOverGu_DifferentBeam_dB; if i==j GainRatio_dB(i,j)=GwOverGu_SameBeam_dB; elseif mod(max(i,j),2)==0 if (abs(i-j)==1) GainRatio_dB(i,j)=GwOverGu_SameBeam_dB; end end % Cx=Px*Gw/Lw % Ix=Cy*10^(-Xsat/10)=Py*Gu/Lu*10^(-Xsat/10) % Jx=Qx*Gu/Lu=Py*10^(-Xes/10)*Gu/Lu % as Px=Py and Lu=Lw % Cx/(Ix+Jx)=Gw/Gu*1/(10^(-Xsat/10)+10^(-Xes/10)) CoverNI_Dw=10^(GainRatio_dB(i,j)/10)*1/(10^-2.5+10^-3.5); CoverNI_Dn_dB(i,j)=10*log10(CoverNI_Dw); if CoverNI_Dw_Min_dB==0 %for the first loop CoverNI_Dw_Min_dB=CoverNI_Dn_dB(i,j); WantedStation=i; UnwantedStation=j; end if CoverNI_Dn_dB(i,j)<=CoverNI_Dw_Min_dB CoverNI_Dw_Min_dB=CoverNI_Dn_dB(i,j); WantedStation=i; UnwantedStation=j; end end end % create an array with minimum C/N)I downlink between two zones interferences AA-AB-AC-BA-BB-BC-CA-CB-CC % for instance notation AB is related to the wanted signal A interferd by an unwanted signal from a station of zone B InterferenceDnZonesArray(1)=min(CoverNI_Dn_dB(1,2),CoverNI_Dn_dB(2,1));%AA InterferenceDnZonesArray(2)=min(CoverNI_Dn_dB(1,3),min(CoverNI_Dn_dB(1,4),min(CoverNI_Dn_dB(2,3),CoverNI_Dn_dB(2,4))));%AB InterferenceDnZonesArray(3)=min(CoverNI_Dn_dB(1,5),min(CoverNI_Dn_dB(1,6),min(CoverNI_Dn_dB(2,5),CoverNI_Dn_dB(2,6))));%AC InterferenceDnZonesArray(4)=min(CoverNI_Dn_dB(3,1),min(CoverNI_Dn_dB(3,2),min(CoverNI_Dn_dB(4,1),CoverNI_Dn_dB(4,2))));%BA InterferenceDnZonesArray(5)=min(CoverNI_Dn_dB(3,4),CoverNI_Dn_dB(4,3));%BB InterferenceDnZonesArray(6)=min(CoverNI_Dn_dB(3,5),min(CoverNI_Dn_dB(3,6),min(CoverNI_Dn_dB(4,5),CoverNI_Dn_dB(4,6))));%BC InterferenceDnZonesArray(7)=min(CoverNI_Dn_dB(5,1),min(CoverNI_Dn_dB(5,2),min(CoverNI_Dn_dB(6,1),CoverNI_Dn_dB(6,2))));%CA InterferenceDnZonesArray(8)=min(CoverNI_Dn_dB(5,3),min(CoverNI_Dn_dB(5,4),min(CoverNI_Dn_dB(6,3),CoverNI_Dn_dB(6,4))));%CB InterferenceDnZonesArray(9)=min(CoverNI_Dn_dB(5,6),CoverNI_Dn_dB(6,5));%CC % Display the result fprintf('relativ to fig2 CoverNI_Dn_dB is a matrix where rows are the wanted stations and columns the interfering stations'); fprintf('ex: CoverNI_Dn_dB(i,j) the wanted stations i is interfered by unwanted stations j'); CoverNI_Dn_dB fprintf('relativ to fig2 InterferenceDnZonesArray correspond to interferences between zone in the order AA, AB, AC, BA, BB, BC, CA, CB, CC'); InterferenceDnZonesArray figure(2) plot(InterferenceDnZonesArray) set(gca,'XTick',[1;2;3;4;5;6;7;8;9]) set(gca,'XTickLabel',{'AA';'AB';'AC';'BA';'BB';'BC';'CA';'CB';'CC'}) xlabel('zones interfering') ylabel('C/N)I downlink') title('C/N)I downlink when the zone of the second letter are interfering with the wanted signal of the zone of the first letter') % Interference Total % Initialisation of variables ArrayCoverNiTotalA=zeros(2,3); ArrayCoverNiTotalB=zeros(2,3); ArrayCoverNiTotalC=zeros(2,3); % concidering we have downlink interference between the same beams (worse case) CoverNI_Dn_dB=CoverNI_Dw_Min_dB; DsameBeam=1/(10^(CoverNI_Dn_dB/10)); % concidering we have downlink interference between two diferent beams (best case) CoverNI_Dn_dB=InterferenceDnZonesArray(2);%for instance AB DdifferentBeam=1/(10^(CoverNI_Dn_dB/10)); % calculation of 1/(C/Ni uplink) U(1)=1/(10^(InterferenceUpZonesArray(1)/10));%interference uplink AA U(2)=1/(10^(InterferenceUpZonesArray(2)/10));%interference uplink AB U(3)=1/(10^(InterferenceUpZonesArray(3)/10));%interference uplink AC U(4)=1/(10^(InterferenceUpZonesArray(4)/10));%interference uplink BA U(5)=1/(10^(InterferenceUpZonesArray(5)/10));%interference uplink BB U(6)=1/(10^(InterferenceUpZonesArray(6)/10));%interference uplink BC U(7)=1/(10^(InterferenceUpZonesArray(7)/10));%interference uplink CA U(8)=1/(10^(InterferenceUpZonesArray(8)/10));%interference uplink CB U(9)=1/(10^(InterferenceUpZonesArray(9)/10));%interference uplink CC for i=1:3 % calculation of C/N)I Total minimizing C/N)I Downlink from station A towards any zones depending on uplink interferences AA or AB or AC ArrayCoverNiTotalA(1,i)=-10*log10(U(i)+DsameBeam); % calculation of C/N)I Total maximizing C/N)I Downlink from station A towards any zones depending on uplink interferences AA or AB or AC ArrayCoverNiTotalA(2,i)=-10*log10(U(i)+DdifferentBeam); end for i=4:6 % calculation of C/N)I Total minimizing C/N)I Downlink from station B towards any zones depending on uplink interferences BA or BB or BC ArrayCoverNiTotalB(1,i-3)=-10*log10(U(i)+DsameBeam); % calculation of C/N)I Total maximizing C/N)I Downlink from station B towards any zones depending on uplink interferences BA or BB or BC ArrayCoverNiTotalB(2,i-3)=-10*log10(U(i)+DdifferentBeam); end for i=7:9 % calculation of C/N)I Total minimizing C/N)I Downlink from station C towards any zones depending on uplink interferences CA or CB or CC ArrayCoverNiTotalC(1,i-6)=-10*log10(U(i)+DsameBeam); % calculation of C/N)I Total maximizing C/N)I Downlink from station C towards any zones depending on uplink interferences CA or CB or CC ArrayCoverNiTotalC(2,i-6)=-10*log10(U(i)+DdifferentBeam); end % Keep max and min value MinCoverNiTotalA=min(ArrayCoverNiTotalA.'); MinCoverNiTotalB=min(ArrayCoverNiTotalB.'); MinCoverNiTotalC=min(ArrayCoverNiTotalC.'); MaxCoverNiTotalA=max(ArrayCoverNiTotalA.'); MaxCoverNiTotalB=max(ArrayCoverNiTotalB.'); MaxCoverNiTotalC=max(ArrayCoverNiTotalC.'); % Display the result fprintf('relativ to fig3 ArrayCoverNiTotalA correspond to the total interference concerning a call from beam A \n columns are the other beam interfering with in uplink in the order A B and C \n first row is for max downlink interferences and the second one for minimum downlink interferences'); ArrayCoverNiTotalA ArrayCoverNiTotalB ArrayCoverNiTotalC l=[1,1;2,2;3,3]; figure(3) subplot(1,3,1);plot(l,ArrayCoverNiTotalA.') set(gca,'XTick',[1;2;3]) set(gca,'ylim',[20.5 24]) set(gca,'XTickLabel',{'AA';'AB';'AC'}) xlabel('uplink zones interfering') ylabel('C/N)I total') title('C/N)I total from A towards any zone') legend('C/N)I tot minimizing C/N)I down','C/N)I tot maximizing C/N)I down') text(3,MinCoverNiTotalA(1),'MinCoverNiTotalA =20.9 dB\rightarrow','HorizontalAlignment','right','FontSize',10) text(3,MinCoverNiTotalA(2),'MinCoverNiTotalA =23.2 dB\rightarrow','HorizontalAlignment','right','FontSize',10) subplot(1,3,2);plot(l,ArrayCoverNiTotalB.') set(gca,'XTick',[1;2;3]) set(gca,'XTickLabel',{'BA';'BB';'BC'}) set(gca,'ylim',[20.5 24]) xlabel('uplink zones interfering') ylabel('C/N)I total') title('C/N)I total from B towards any zone') legend('C/N)I tot minimizing C/N)I down','C/N)I tot maximizing C/N)I down') text(3,MinCoverNiTotalB(1),'MinCoverNiTotalB =21 dB\rightarrow','HorizontalAlignment','right','FontSize',10) text(3,MinCoverNiTotalB(2),'MinCoverNiTotalB =23.4 dB\rightarrow','HorizontalAlignment','right','FontSize',10) subplot(1,3,3);plot(l,ArrayCoverNiTotalC.') set(gca,'XTick',[1;2;3]) set(gca,'XTickLabel',{'CA';'CB';'CC'}) set(gca,'ylim',[20.5 24]) xlabel('uplink zones interfering') ylabel('C/N)I total') title('C/N)I total from C towards any zone') legend('C/N)I tot minimizing C/N)I down','C/N)I tot maximizing C/N)I down') text(3,MinCoverNiTotalC(1),'MinCoverNiTotalC =21.1 dB\rightarrow','HorizontalAlignment','right','FontSize',10) text(3,MinCoverNiTotalC(2),'MinCoverNiTotalC =23.6 dB\rightarrow','HorizontalAlignment','right','FontSize',10)