Sie sind auf Seite 1von 8

% nodes with grid specification

clear;
num = 20;
rand('state', 0);
ds = zeros(num,num);
L = 1000;
R = 200; % maximum range;
netXloc = rand(1,num)*L;
netYloc = rand(1,num)*L;
for i = 1:num
for j = 1:num
ds(i,j) = sqrt((netXloc(i) - netXloc(j))^2 + (netYloc(i) - netYloc(j))^2);
end;
end;

%configuration constants
%num = 100; % nr of nodes
% random seed initialisation
% the line below chooses a fixed random seed
%s = 2.947383660000000e+009;
% uncomment next line to use different random seed
%s = rand (seed);
%rand('seed', s); % WE : initializes the random generator to method
seed and value s
% all node positions
%pos = rand(2,num);
%%
fullyconnected= zeros(1,num);
partialconnect=1; onemorechild=1;
newparent = zeros(1,num);
newchild = zeros(1,num);
%allconnect = zeros(1,num);
% totalconnect = 0;
Level = 1;
powerlevel = zeros(1,num);
yesneighbor = ones(1,num);
neighbor = zeros(num,num);
% ds is distance between all nodes
%ds = zeros(num,num);

%for i=1:num;ds (i,1:num) = sqrt((pos(1,i) - pos(1,:)).^2 + (pos(2,i)pos(2,:)).^2);end;


N = max(ds);
M = max(N);
ds = ds/M;
for i = 1:num
for j = 1:num
yesneighbor(i) = 0;
yesneighbor(j) = 0;
for k = 1:num
if ((ds(i,k) >= ds(i,j))&& ds(j,k) >= ds(i,j) && (k ~=i ) && (k ~= j))
yesneighbor(k) = 0; end;
end;
if (yesneighbor == zeros(1,num))
neighbor(i,j) = 1; end; yesneighbor = ones(1,num);
end;
end;
figure(Level); title('RNG network');
for i=1:num
plot(netXloc(i), netYloc(i), '.');
end;
for i = 1:num
text(netXloc(i), netYloc(i), num2str(i));
for j = 1:num
if (neighbor(i,j) == 1)
line([netXloc(i) netXloc(j)], [netYloc(i) netYloc(j)]); end;
end;
end;

%__________________________________________________________
____________
while (partialconnect==1)
temp=neighbor; fullyconnected = zeros(1,num);
newparent(1)=1; onemorechild=1; ds1 = ds;
for i = 1:num
for j = 1:num
if (neighbor(i,j) ==1)
ds1(i,j) = 2; end
end;

end;
while (onemorechild==1)
for i = 1:num
if (newparent(i)==1)
for j = 1:num
if ((temp(i,j) == 1) && (i~=j))
temp(i,1)=0; temp(i,j)=0; temp(j,i)=0; newchild(j)=1;
fullyconnected(i)=1; fullyconnected(j)=1; onemorechild=1; end;
end;
end;
end;
newparent=newchild; newchild = zeros(1,num);
if fullyconnected == ones(1,num)
partialconnect = 0;end;
if newparent==zeros(1,num)
onemorechild=0; end;
end;

%__________________________________________________________
_______
figure(Level); title('RNG network');
for i=1:num
plot(netXloc(i), netYloc(i), '.');
end;
for i = 1:num
text(netXloc(i), netYloc(i), num2str(i));
for j = 1:num
if (neighbor(i,j) == 1)
line([netXloc(i) netXloc(j)], [netYloc(i) netYloc(j)]); end;
end;
end;
%__________________________________________________________
________
if

(partialconnect == 1)
Level=Level+1;
for i = 1:num
for j = 1:num

yesneighbor(i) = 0;
yesneighbor(j) = 0;
for k = 1:num
if ((ds1(i,k) >= ds1(i,j))&& ds1(j,k) >= ds1(i,j) && (k ~=i ) && (k ~= j))
yesneighbor(k) = 0; end;
end;
if (yesneighbor == zeros(1,num))
neighbor(i,j) = 1; end; yesneighbor = ones(1,num);
end;
end;
end;
end;
%__________________________________________________________
_
neirng=neighbor;
%______________minimum hop-count for RNG__________
for i = 1:num
for j = 1:num
if (neirng(i,j) > 0)
neirng(j,i) =1; neirng(i,j)=1; end;
end;
end;
hop = zeros(num,num);
for src = 1:num
for dst = 1:num
if (src ~= dst)
k = 1; over = 0; newparent =zeros(1,num); newchild = zeros(1,num);
newparent(src) = 1;
while ( over == 0)
for i = 1:num
if (newparent(i) == 1)
for j = 1:num
if ((neirng(i,j)> 0) && (i ~= j))
newchild(j) = 1; end;

end;
end;
end;
for i = 1:num
if ((i == dst)&& (newchild(i) == 1))
hop(src,dst) = k; over = 1; end
end;
if (over== 0)
k = k+1; end;
newparent = newchild; newchild = zeros(1,num);
end;
end;
end;
end;
%________average hop count for the network_____________
hopcount = 0;
for i = 1:num
for j = 1:num
hopcount = hopcount + hop(i,j);
end;
end;
averagernghops = hopcount /((num * (num - 1)));
%__________________________________________________________
%_________________________node degree for
RNG___________________
nodedegree = zeros(1,num); degree = 0;
for i = 1:num
for j = 1:num
if ((neirng(i,j)>0) && (i ~= j))
degree = degree + 1; end;
end;
nodedegree(i) = degree; degree = 0;
end;
degree = 0;
for i = 1:num
degree = degree + nodedegree(i);
end;
averagerngdegree = degree/num;

%________________________________________________________
%_________energy consumed in RNG method____________
powerlevel2 = zeros(1,num); powerconsumed2 = 0;
pow = 0;
for i = 1:num
for j = 1:num
if (neirng(i,j)>0 && (i~=j) && (pow < ds(i,j)))
pow = ds(i,j); end;
end;
powerlevel2(i)=pow; pow=0;
end;
for i = 1:num
powerconsumed2 = powerconsumed2 + powerlevel2(i);
end;
pow=0;
for i = 1:num
if (powerlevel2(i) > pow)
pow = powerlevel2(i); end;
end;
powerconsumed4 = pow * num;
%___________________________________________
interference=zeros(num,num); internos=0;
for i = 1:num
for j = 1:num
if (neirng(i,j) == 1)
for k = 1:num
%if (((ds(i,k)<= powerlevel2(i)) && (k~=j) && (k~=i)) ||
((ds(j,k)<=powerlevel2(j)) && (k~=i) && (k~=j)))
if ((ds(i,k)<= powerlevel2(i)) && (k~=j) && (k~=i))
internos=internos+1; end;
end;
end;
interference(i,j)=internos; internos=0;
end;

end;
%__________________interference nods for each edge
intermax=0; interavg=0; hops=0;
for i = 1:num
for j = 1:num
if (neirng(i,j)==1)
if (interference(i,j) > intermax)
intermax=interference(i,j); end;
interavg=interavg+interference(i,j);hops=hops+1;
end;
end;
end;
interavg=interavg/hops;
%_______________________________
%_____SNR_____
SNR=zeros(num,num); nodenoise=0; nodesignal=0; nodesnr=0;
BER=SNR; adddb=0;
for i = 1:num
for j = 1:num
if ((neirng(i,j) == 1)&& (i~=j))
for k = 1:num
if (((ds(i,k)<= powerlevel2(i)) && (k~=j) && (k~=i)))
nodenoise=nodenoise+(powerlevel2(k)/(ds(i,k)*ds(i,k))); end;
end;
end;
if ((neirng(i,j)==1) && (i~=j))
%nodesignal=powerlevel2(i)/(ds(i,j)*ds(i,j));
noise = 1.38*(10.^(-23))*290*1200000; % N=KTB BW=1200KHz;
noisedb = 10*log10(noise) + 35; % dBm
signal = powerlevel2(i)* ((300/900)^2)/((4*3.14*ds(i,j))^2); %Pt *
sqr(lamda)/sqr(4pid)
signaldb = 10*log10(signal) -30; %dBm and fade margin
snr = signaldb-noisedb;
if (interference(i,j)~=0)
adddb = 10*log10(interference(i,j));
snr = snr - adddb; adddb=0;
end; %interference fromother nodes

SNR(i,j) = (snr -30)* (600/1200); % dBm to dB and Eb/N0 = SNR *


RF-BW/(datata rate * coding or spread)
% data rate 40Kbps and DSSS spread = 15
BER(i,j) = 0.5*erfc(sqrt(10.^(SNR(i,j)/10)));
%nodesnr=(10*log(nodesignal))-(10*log(nodenoise));
%SNR(i,j)=nodesnr;
end;
%nodesnr=0;nodenoise=0; nodesignal=0;
end;
end;
%__________________interference nods for each edge
snrlow=1000; snravg=0; hops=0; berhigh = 1000;
for i = 1:num
for j = 1:num
if ((neirng(i,j)==1) && (i~=j))
if (SNR(i,j) < snrlow)
snrlow=SNR(i,j); berhigh = BER(i,j);end;
snravg=snravg+SNR(i,j);hops=hops+1;
end;
end;
end;
snravg=snravg/hops;
%___________________________

Das könnte Ihnen auch gefallen