How compute connected node with each main node

3 visualizaciones (últimos 30 días)
muhammad farttoos
muhammad farttoos el 10 de Jul. de 2024
Comentada: muhammad farttoos el 18 de Jul. de 2024
I need to compute the number of green nodes and number of red nodes connected with each fixed nodes as shown in figure below (ie. for fixed node 1 in top left there are 14 green node and 0 red node while in node 4 in middle there are 9 green nodes and 5 red nodes connected with it
the code is in below
%Composing fixed nodes t
for h=1:1:num_fixed_nodes
S1(h).xd = position_region(i,1) + fixed_nodes{i, 1}(h,1);
S1(h).yd = position_region(i,2) + fixed_nodes{i, 1}(h,2);
S1(h).distance = sqrt((S1(h).xd-bs_x)^2 + (S1(h).yd-bs_y)^2 );
S1(h).G=0;
S1(h).id=h;
S1(h).type='C';
S1(h).temp = interp2(aa1,bb1,temp_values_1,S1(h).xd,S1(h).yd);
S1(h).E = Eo*rand(1,1);
Et=Et+S1(h).E;
S1(h).node_status = S1(h).temp<thresh_temp;
if(S1(h).node_status==1)
scatter(S1(h).xd,S1(h).yd, 'filled','MarkerFaceColor','m');
else
scatter(S1(h).xd,S1(h).yd, 'filled','MarkerFaceColor','r');
end
end
%Composing random nodes that will then communicate with fixed
%nodes
for h=num_fixed_nodes+1:1:num_nodes
%Generate random nodes within the region
S1(h).xd = position_region(i,1) + rand(1,1)*region_width;
S1(h).yd = position_region(i,2) + rand(1,1)*region_height;
S1(h).G=0;
S1(h).id=h;
S1(h).type='N';
S1(h).temp = interp2(aa1,bb1,temp_values_1,S1(h).xd,S1(h).yd);
S1(h).E=Eo*rand(1,1);
Et=Et+S1(h).E;
S1(h).node_status = S1(h).temp<thresh_temp;
if(S1(h).node_status==1)
scatter(S1(h).xd,S1(h).yd, 'filled','MarkerFaceColor','g');
else
scatter(S1(h).xd,S1(h).yd, 'filled','MarkerFaceColor','r');
end

Respuestas (1)

surya venu
surya venu el 10 de Jul. de 2024
Editada: surya venu el 10 de Jul. de 2024
Hi,
To compute the number of green nodes and red nodes connected with each fixed node, you can add additional code to count the nodes based on their status and their proximity to each fixed node. Below is a modified version of your code that includes this functionality:
% Initialize arrays to store the counts of green and red nodes for each fixed node
green_count = zeros(num_fixed_nodes, 1);
red_count = zeros(num_fixed_nodes, 1);
% Composing fixed nodes
for h = 1:num_fixed_nodes
S1(h).xd = position_region(i, 1) + fixed_nodes{i, 1}(h, 1);
S1(h).yd = position_region(i, 2) + fixed_nodes{i, 1}(h, 2);
S1(h).distance = sqrt((S1(h).xd - bs_x)^2 + (S1(h).yd - bs_y)^2);
S1(h).G = 0;
S1(h).id = h;
S1(h).type = 'C';
S1(h).temp = interp2(aa1, bb1, temp_values_1, S1(h).xd, S1(h).yd);
S1(h).E = Eo * rand(1, 1);
Et = Et + S1(h).E;
S1(h).node_status = S1(h).temp < thresh_temp;
if S1(h).node_status == 1
scatter(S1(h).xd, S1(h).yd, 'filled', 'MarkerFaceColor', 'm');
else
scatter(S1(h).xd, S1(h).yd, 'filled', 'MarkerFaceColor', 'r');
end
end
% Composing random nodes that will then communicate with fixed nodes
for h = num_fixed_nodes + 1:num_nodes
% Generate random nodes within the region
S1(h).xd = position_region(i, 1) + rand(1, 1) * region_width;
S1(h).yd = position_region(i, 2) + rand(1, 1) * region_height;
S1(h).G = 0;
S1(h).id = h;
S1(h).type = 'N';
S1(h).temp = interp2(aa1, bb1, temp_values_1, S1(h).xd, S1(h).yd);
S1(h).E = Eo * rand(1, 1);
Et = Et + S1(h).E;
S1(h).node_status = S1(h).temp < thresh_temp;
if S1(h).node_status == 1
scatter(S1(h).xd, S1(h).yd, 'filled', 'MarkerFaceColor', 'g');
else
scatter(S1(h).xd, S1(h).yd, 'filled', 'MarkerFaceColor', 'r');
end
% Check proximity to each fixed node and update counts
for fixed_h = 1:num_fixed_nodes
distance_to_fixed = sqrt((S1(h).xd - S1(fixed_h).xd)^2 + (S1(h).yd - S1(fixed_h).yd)^2);
if distance_to_fixed <= communication_range % Assuming a predefined communication range
if S1(h).node_status == 1
green_count(fixed_h) = green_count(fixed_h) + 1;
else
red_count(fixed_h) = red_count(fixed_h) + 1;
end
end
end
end
% Display the counts
for h = 1:num_fixed_nodes
fprintf('Fixed node %d: %d green nodes, %d red nodes\n', h, green_count(h), red_count(h));
end
Explanation:
  1. Fixed Nodes Loop: The loop for fixed nodes remains unchanged except for the initialization of the arrays.
  2. Random Nodes Loop: In addition to the existing operations, this loop now includes a nested loop to check the proximity of each random node to each fixed node.
  3. Distance Check: For each random node, the distance to each fixed node is calculated. If the distance is within a predefined "communication_range", the node is counted as either green or red based on its status.
Make sure to define "communication_range" appropriately based on your specific requirements.
Hope it helps.
  1 comentario
muhammad farttoos
muhammad farttoos el 18 de Jul. de 2024
Hello,
Thanks for the reply and sorry for the delay, I just need to ask what "communication_range" means. I distributed nodes randomly within area (50x50) and nodes is depends where it located within area so how defined "communication_range"??

Iniciar sesión para comentar.

Categorías

Más información sobre Logical en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2023b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by