how can i solve this 'Undefined function or variable '?'.
Afficher commentaires plus anciens
i get this error 'Undefined function or variable' however i defined it. how do i solve it? i think i should insect bounds, that will tell my code to stop is all nodes are in a cluster and continue when (remainder) there are still nodes remain that are not in a cluster, but i am failing to come up with a working code. please help me
here is my code
N=50 % number of nodes
Dreq=2, dij=distance matrix with rand no. from 1-10
%%%%%%%%%Cluster_9 %%%%%%%%%%
kk = 0;
k = 0;
for v = 1:length(remainder_7)
if dij(node_k,remainder_7(v))<= Dreq
k = k+1;
cluster_9(k)= remainder_7(v);
else kk = kk+1;
remainder_8(kk)= remainder_7(v); % remaining nodes that are not visited
end
end
for k =1:length(cluster_9)
for k1=1:length(cluster_9)
dij9(k,k1)=dij(cluster_9(k),cluster_9(k1)); % distances in cluster_9
end
end
candidate_n8(1)=node_k;
Lavg9(1)= Lavg(node_k);
k=0;
for n = 1:length(cluster_9)
if cluster_9(n)~=node_k
if max(dij9(n,:))<=Dreq && Lavg(cluster_9(n))<Lavg(node_k)
k=k+1;
candidate_n8(k)=cluster_9(n);
Lavg8(k)=Lavg(cluster_9(n));
end
end
end
[~,index]=min(Lavg9);
node_n = candidate_n8(index);
Controller(9)=node_n;
% finding the node in the remainder that is near the cluster_9
k = 0;
for k1 =1:length(cluster_9)
for k2 =1:length(remainder_8)
k = k+1;
DIJ_8(k) = dij(cluster_9(k1),remainder_8(k2));
TABLE(k,1) = k2;
end
end
[~,index] = min(DIJ_8);
node_k = remainder_8(TABLE(index,1));
%%%%%%%%%%Clister_10%%%%%%%%%%
kk = 0;
k = 0;
for v = 1:length(remainder_8)
if dij(node_k,remainder_8(v))<= Dreq
k = k+1;
cluster_10(k)= remainder_8(v);
else kk = kk+1;
remainder_9(kk)= remainder_8(v); % remaining nodes that are not visited
end
end
for k =1:length(cluster_10)
for k1=1:length(cluster_10)
dij10(k,k1)=dij(cluster_10(k),cluster_10(k1)); % distances in cluster_10
end
end
candidate_n9(1)=node_k;
Lavg10(1)= Lavg(node_k);
k=0;
for n = 1:length(cluster_10)
if cluster_10(n)~=node_k
if max(dij10(n,:))<=Dreq && Lavg(cluster_10(n))<Lavg(node_k)
k=k+1;
candidate_n9(k)=cluster_10(n);
Lavg9(k)=Lavg(cluster_10(n));
end
end
end
[~,index]=min(Lavg10);
node_n = candidate_n9(index);
Controller(10)=node_n;
end
Undefined function or variable 'remainder_8'.
Error in my_code (line 518)
for k2 =1:length(remainder_8)
6 commentaires
Stephen23
le 12 Avr 2018
@mathapelo mokgoatsane: please show us the complete error message. This means all of the red text.
Torsten
le 12 Avr 2018
I can't see a variable named "remainder_8" in your code.
mathapelo mokgoatsane
le 12 Avr 2018
Adam
le 12 Avr 2018
Please format your code! You can't seriously expect anyone to plough through all that?! Even formatted it is a lot of code to look through, but unformatted it is unreadable!
mathapelo mokgoatsane
le 12 Avr 2018
Adam
le 12 Avr 2018
remainder_8 is only created in an else statement. Presumably in the case you are running your code never goes into the else and so the variable does not exist. If this is a valid scenario you should create an empty variable somewhere towards the top of your code e.g.
remainder_8 = [];
then
length( remainder_8 )
will return 0, though then the error will just move to this line:
node_k = remainder_8(TABLE(index,1));
where you again assume this variable exists.
Réponses (2)
Walter Roberson
le 12 Avr 2018
for v = 1:length(remainder_7)
if dij(node_k,remainder_7(v))<= Dreq
k = k+1;
cluster_9(k)= remainder_7(v);
else
kk = kk+1;
remainder_8(kk)= remainder_7(v); % remaining nodes that are not visited
end
end
In that code if the else is never true then remainder_8 will never be defined.
The problem is simple: remainder_8 does not exist, because your code never defines it. Think about what happens when all of the sampled dij values are <= Dreq:
for ...
if dij(node_k,remainder_7(v))<= Dreq
...
else ...
remainder_8(kk) = ...
end
end
then remainder_8 will simply never be defined. Solution: put this at the start of your code:
remainder_ = [];
Catégories
En savoir plus sur Creating and Concatenating Matrices dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!