⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 project314.m

📁 coverage and interfernce in wireless channel
💻 M
字号:
%
% project314     (two BS and handover)
%
%========================================================================
clear
close all
clc
%========================================================================
fMHz=2000;     % Frequency in MHz
Lcorr=30;       % Correlation distance in meters 

EIRP=30;        % EIRP dBm
AA=100;        % Loss at 1 km 
n=3.6;          % Propagation exponent
SS=7;           % Location variability in dB

%=======================================================================
%lambdac=300/fMHz;   % wavelength in m
ds=1;               % sample spacing in m  
Distance= 6;       % simulated distance (km)
InterpRate=round(Lcorr/ds);   % Interpolation rate 
Lcorr=InterpRate*ds;       % slightly correct Lcorr to make it a multiple of ds

Nsamples=round(Distance*1000/Lcorr);

BSseparation=Distance;   % separation between BSs in km
HO_ThresHold=-85;  % Handover threshild dBm
HO_Margin=15;      % Handover margin dB

% Create Gaussian series ================================================

d_axis1=[0:Nsamples-1]'*Lcorr/1000;

warning off
veryslowVars=EIRP-AA-10*n*log10(d_axis1);
veryslowVars(1)=veryslowVars(2);        % replace veryslowVars(1)=inf
warning on

slowVars=randn(Nsamples,1)*SS;             % 1st draw for BS1
R1=veryslowVars+slowVars;                  % Received power from BS1 

slowVars=randn(Nsamples,1)*SS;             % 1st draw for BS2
R2=veryslowVars+slowVars;                  % Received power from BS2 


%=======================================================================

d_axis2=([0:1/InterpRate:Nsamples])*Lcorr/1000;

Rinterpolated1=interp1(d_axis1,R1,d_axis2,'spline');
Rinterpolated2=interp1(d_axis1,R2,d_axis2,'spline');

d_axis2BS1=d_axis2;                      % Distance axis for BS1 signal (same as before)
d_axis2BS2=max(d_axis2BS1)-d_axis2BS1;   % Distance axis for BS2 signal 
d_axis2BS2=BSseparation-d_axis2BS1;   % Distance axis for BS2 signal 

figure,plot(d_axis2BS1,Rinterpolated1,'k',d_axis2BS2,Rinterpolated2,'k:', ...
    [d_axis2BS2(end) d_axis2BS1(end)],[HO_ThresHold HO_ThresHold],'k--', ...
    [d_axis2BS2(end) d_axis2BS1(end)],[HO_ThresHold+HO_Margin HO_ThresHold+HO_Margin],'k:')
xlabel('Traversed distance (km)')
ylabel('Received signal (dBm)')


% ========================================================================
% HO algorithm 1
% ========================================================================
BSseries=[1];           % Serving Base Station series
currentBS=1;            % starting with MS hooked up to BS1
RHO=Rinterpolated1(1);  % MS recieving BS1 signal
switchBS=0;             % Swith 

indexBS1=length(Rinterpolated1);
indexBS2=length(Rinterpolated2); 

% for ii=2:length(Rinterpolated1)-1, 
for ii=2:length(Rinterpolated1),     
    if currentBS==1 & switchBS==0, 
        if Rinterpolated1(ii)> HO_ThresHold, 
             RHO=[RHO; Rinterpolated1(ii)];
             currentBS=1;
             BSseries=[BSseries; currentBS];
             switchBS=1; 
        else if Rinterpolated1(ii) < Rinterpolated2(indexBS2-ii+1),
             RHO=[RHO; Rinterpolated2(indexBS2-ii+1)];
             currentBS=2;
             BSseries=[BSseries; currentBS];
             switchBS=1; 
            else
             RHO=[RHO; Rinterpolated1(ii)];
             currentBS=1;
             BSseries=[BSseries; currentBS];
             switchBS=1; 
            end
        end
    end
    if currentBS==2 & switchBS==0, 
        if Rinterpolated2(indexBS2-ii+1)> HO_ThresHold, 
             RHO=[RHO; Rinterpolated2(indexBS2-ii+1)];
             currentBS=2;
             BSseries=[BSseries; currentBS];
             switchBS=1; 
        else if Rinterpolated2(indexBS2-ii+1) < Rinterpolated1(ii),
             RHO=[RHO; Rinterpolated1(ii)];
             currentBS=1;
             BSseries=[BSseries; currentBS];
             switchBS=1; 
            else
             RHO=[RHO; Rinterpolated2(indexBS2-ii+1)];
             currentBS=2;
             BSseries=[BSseries; currentBS];
             switchBS=1; 
            end
        end
    end
    switchBS=0;       % reset swicth BS flag
end

figure,plot(d_axis2BS1(1:indexBS1),BSseries(1:indexBS1),'k')
a=axis;axis([a(1) a(2) 0 3])
xlabel('Traversed distance (m)')
ylabel('No.of BS handling the call')

figure,plot(d_axis2BS1(1:indexBS1),RHO(1:indexBS1),'k',...
    d_axis2BS1(1:indexBS1),Rinterpolated1(1:indexBS1),'k:',...
    d_axis2BS2(1:indexBS2),Rinterpolated2(1:indexBS2),'k--')
xlabel('Traversed distance (km)')
ylabel('Received signal (dBm)')

% =======================================================================
% HO algorithm 2   Including HO Margin
%========================================================================
BSseries=[1];           % Serving Base Station series
currentBS=1;            % starting with MS hooked up to BS1
RHO=Rinterpolated1(1);  % MS recieving BS1 signal
switchBS=0;             % Swith 

indexBS1=length(Rinterpolated1);
indexBS2=length(Rinterpolated2); 

% for ii=2:length(Rinterpolated1)-1, 
for ii=2:length(Rinterpolated1),     
    if currentBS==1 & switchBS==0, 
        if Rinterpolated1(ii)> HO_ThresHold, 
             RHO=[RHO; Rinterpolated1(ii)];
             currentBS=1;
             BSseries=[BSseries; currentBS];
             switchBS=1; 
        else if Rinterpolated1(ii)+HO_Margin < Rinterpolated2(indexBS2-ii+1),
             RHO=[RHO; Rinterpolated2(indexBS2-ii+1)];
             currentBS=2;
             BSseries=[BSseries; currentBS];
             switchBS=1; 
            else
             RHO=[RHO; Rinterpolated1(ii)];
             currentBS=1;
             BSseries=[BSseries; currentBS];
             switchBS=1; 
            end
        end
    end
    if currentBS==2 & switchBS==0, 
        if Rinterpolated2(indexBS2-ii+1)> HO_ThresHold, 
             RHO=[RHO; Rinterpolated2(indexBS2-ii+1)];
             currentBS=2;
             BSseries=[BSseries; currentBS];
             switchBS=1; 
        else if Rinterpolated2(indexBS2-ii+1)+HO_Margin < Rinterpolated1(ii),
             RHO=[RHO; Rinterpolated1(ii)];
             currentBS=1;
             BSseries=[BSseries; currentBS];
             switchBS=1; 
            else
             RHO=[RHO; Rinterpolated2(indexBS2-ii+1)];
             currentBS=2;
             BSseries=[BSseries; currentBS];
             switchBS=1; 
            end
        end
    end
    switchBS=0;       % reset swicth BS flag
end

figure,plot(d_axis2BS1(1:indexBS1),BSseries(1:indexBS1),'k')
a=axis;axis([a(1) a(2) 0 3])
xlabel('Traversed distance (m)')
ylabel('No.of BS handling the call')

figure,plot(d_axis2BS1(1:indexBS1),RHO(1:indexBS1),'k',...
    d_axis2BS1(1:indexBS1),Rinterpolated1(1:indexBS1),'k:',...
    d_axis2BS2(1:indexBS2),Rinterpolated2(1:indexBS2),'k--')
xlabel('Traversed distance (km)')
ylabel('Received signal (dBm)')

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -