How can I solve this error "Array indices must be positive integers or logical values." and make a condition to fix it as index?
Show older comments
I want make the condition in the line 40th somthing like ,,,, if mindistD > maxrange^2 and mindistD<maxrangeD2 and then fix it in last line of code such as r_DxU = dist_D_UE( condition), but I couldn't find a way, I would appreciate any help
NumDrone=2; % Number of Drone Nodes
NumUEs=50; % Number of gound user Nodes
ro=1000; % Raduis of network layout
center=[0 0]; % Center of network layout circle
h_uav=100; % hieght of Drone Nodes
maxrange=200; % Maximum range of coverage area for Drone Nodes
maxrange1=1000; % maximum range of coverage area for Ground Node (gNB)
maxrangeD2=250; % second coverage range for Drone Nodes
PosgNB_x = (0).';
PosgNB_y = (0).';
PosgNB = [PosgNB_x,PosgNB_y];%Ground Node (gNB)
theta_Drone=2*pi*(rand(NumDrone,1)); % distributed random number of Drone Nodes
g = 0.5 * ro + 0.5 * ro * rand(NumDrone,1); % let the drones deployed away from the center of circle network layout
PosDrone_x=center(1)+g.*cos(theta_Drone); %
PosDrone_y=center(2)+g.*sin(theta_Drone);
PosDrone = [PosDrone_x ,PosDrone_y];
theta1 = rand(NumUEs, 1) * 2*pi; % distributed random number of Users
r1 = ro * sqrt(rand(NumUEs, 1));
PosUE_x = r1 .* cos(theta1(:)) + center(:,1);
PosUE_y = r1 .* sin(theta1(:)) + center(:,2);
PosUE = [PosUE_x,PosUE_y];
PosUAV3D = [PosDrone, h_uav * ones(NumDrone,1)]; % 3D Drone Nodes Positions
PosUE3D = [PosUE, zeros(NumUEs,1)];
dist_D_UE = sum((permute(PosUE3D,[1 3 2]) - permute(PosUAV3D,[3 1 2])).^2,3); % Distance between Drone Nodes and its ground Users
dist_gNB_UE = (PosUE(:,1)-PosgNB_x.').^2 + (PosUE(:,2)-PosgNB_x.').^2; % Distance between Ground Node and its ground Users
dist_gNB_D = hypot(PosDrone_x-PosgNB_x(1,:).', PosDrone_y-PosgNB_y(1,:).'); % Distance between Ground Node and Drone Nodes
[mindistD, assigned_BS] = min(dist_D_UE,[],2); % assigned users to the nearest Drone Nodes
[mindistgNB, assigned_BS1] = min(dist_gNB_UE,[],2); % assigned users to the nearest Ground Node
inrange = mindistD <= maxrange^2; % Condition to make the Drone Nodes associated only the users that located around the Drone Node with 200m
inrangegNB = ~inrange; % Condition to make the Gound Nodes associated the users that located out of the coverage range of Drone Nodes
% Here I am trying to let the Drone Node to consider the users that located
% between 200m and 250m as interfered users
inrange2=mindistD<= maxrangeD2^2;
X=nnz(inrange2);
Y=nnz(inrange);
MidRangD=X-Y;
MidRD=nnz(MidRangD);
%if mindistD > maxrange^2 & mindistD<maxrangeD2
% outrangeD=DORange_I;
%end
%inrangegNB= mindistgNB <= maxrange1^2 | mindistD <= maxrange^2; % interfering dist of DxU
r_B0D0 =dist_gNB_D; % distance between Ground Node and Drone Nodes
r_BxU = dist_gNB_UE(inrange); % distance between interfering Ground Node and user
r_B0U = dist_gNB_UE(inrangegNB); % distance between serving Ground Node and user
r_D0U = dist_D_UE(inrange); % distance between the serving drone Node and users
r_DxU = dist_D_UE(X)-dist_D_UE(Y); % distance between interfering Drone Node and user
Accepted Answer
More Answers (0)
Categories
Find more on Get Started with MATLAB in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!