on implementing the code in matlab its showing error "unrecognised variable or function 'leach_enhanced'. "
8 views (last 30 days)
Show older comments
% Initialization
N = 100; % number of nodes in the network
E = 0.5; % initial energy of each node
p = 0.05; % desired percentage of cluster heads
r = 50; % radius of the sensing area
a = 25; % radius of the required area
t = 0; % current round number
c1 = -1; % ID of the first cluster head
c2 = -1; % ID of the second cluster head
head_count = 0; % number of cluster heads
active_nodes = zeros(N, 1); % array to store the IDs of active nodes
cluster_heads = zeros(N, 1); % array to store the IDs of cluster heads
% Round-based operation
while true
t = t + 1; % increment the round number
head_count = 0; % reset the cluster head count
% Cluster head selection
for i = 1:N
if E > 0 && rand() < p % node has energy and is selected as a cluster head
distance_to_bs = get_distance_to_bs(node(i)); % distance to the base station
distance_to_c1 = get_distance_to_node(node(i), c1); % distance to the first cluster head
distance_to_c2 = get_distance_to_node(node(i), c2); % distance to the second cluster head
if distance_to_bs <= r && (distance_to_c1 <= a || distance_to_c2 <= a) % node is in the sensing area and close to a cluster head
head_count = head_count + 1; % increment the cluster head count
if c1 == -1 || distance_to_c1 < distance_to_c2 % node is closer to the first cluster head
c2 = c1; % move the current second cluster head to the first position
c1 = i; % select the current node as the first cluster head
else % node is closer to the second cluster head
c2 = i; % select the current node as the second cluster head
end
cluster_heads(i) = 1; % mark the node as a cluster head
end
end
end
% Data collection and aggregation
for i = 1:N
if E > 0 % node has energy
if cluster_heads(i) == 1 % node is a cluster head
active_nodes(i) = 1; % mark the node as active
% collect and aggregate data from associated nodes
% transmit aggregated data to the base station
else % node is not a cluster head
distance_to_c1 = get_distance_to_node(node(i), c1); % distance to the first cluster head
distance_to_c2 = get_distance_to_node(node(i), c2); % distance to the second cluster head
if distance_to_c1 < distance_to_c2 % node is closer to the first cluster head
active_nodes(c1) = 1; % mark the first cluster head as active
% send data to the first cluster head
else % node is closer to the second cluster head
active_nodes(c2) = 1; % mark the second cluster head as active
% send data to the second cluster head
end
****************************************************************************
% Initialization
N = 100; % number of nodes in the network
E = ones(N, 1) * 0.5; % initial energy of each node
p = 0.05; % desired percentage of cluster heads
r = 50; % radius of the sensing area
a = 25; % radius of the required area
t = 0; % current round number
c1 = -1; % ID of the first cluster head
c2 = -1; % ID of the second cluster head
head_count = 0; % number of cluster heads
active_nodes = zeros(N, 1); % array to store the IDs of active nodes
cluster_heads = zeros(N, 1); % array to store the IDs of cluster heads
% Generate random node locations within a 100x100 region
node_locations = rand(N, 2) * 100;
% Calculate the distance between each node and the base station
bs_location = [50, 50];
node_distances = pdist2(node_locations, bs_location);
% Run the simulation for 100 rounds
for t = 1:100
% Call the main function to perform cluster head selection and data collection
[active_nodes, cluster_heads, c1, c2] = leach_enhanced(node_locations, node_distances, active_nodes, cluster_heads, c1, c2, E, p, r, a);
end
0 Comments
Answers (1)
Divyam
on 28 Oct 2024 at 4:53
The function "leach_enhanced" appears to be a custom function, as it is not provided by MATLAB. Since this function has not been defined in this file, the error "Unrecognized variable or function 'leach_enhanced'." is being displayed in your command window.
To resolve this error, either define the function in the file where this code is located or create another ".m" file with the function definition in the same directory as the code. As a best practice, ensure that the name of the file is the same as the function.
For more information on how to create functions in separate files using MATLAB, refer to this documentation: https://www.mathworks.com/help/matlab/matlab_prog/create-functions-in-files.html
0 Comments
See Also
Categories
Find more on MATLAB Parallel Server 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!