2009-12-13 11 views
-2

Comme aidé par gnovice J'ai reçu le code suivant, mais maintenant je veux assigner de l'énergie (aléatoirement) à tous les nœuds en utilisant E=floor(rand(1)*10) et aussi vouloir comparer pour l'énergie maximale et quelle est la distance entre eux?comment affecter l'énergie aléatoire E à chaque nœud et comparer deux nœuds pour l'énergie maximale et également trouver la distance entre eux?

N=input('no. of nodes : ');   %# Number of nodes 
coords = num2cell(rand(N,2))  %# Cell array of random x and y coordinates 
nodes=struct('x',coords(:,1),... %# Assign x coordinates 
      'y',coords(:,2));  %# Assign y coordinates 
plot([nodes.x],[nodes.y],'r*');  %# Plot all the nodes in red 
index = randi(N,[1 2])    %# Pick two nodes at random 
hold on; 
plot([nodes(index).x],[nodes(index).y],'b*'); %# Plot 2 random nodes in blue 
index(1)          %# which node is selected first. 
index(2)          %# which node is selected second. 

cette question est de suivi de this question.

+1

Vous aideriez tout le monde à répondre à votre question si vous avez mentionné la question à laquelle il faut répondre au lieu de simplement mentionner qu'il s'agit d'un suivi. Est-ce http://stackoverflow.com/questions/1749888/how-do-i-compare-elements-of-one-row-with-every-other-row-in-the-same-matrix-in-m? –

+0

Je suis désolé mon ami, de la prochaine fois je vais m'en occuper. – gurwinder

Répondre

1

Si vous souhaitez attribuer une valeur « énergie » à chaque nœud, vous pouvez modifier le code de my previous answer:

N = input('no. of nodes : ');  %# Number of nodes 
coords = num2cell(rand(N,2));  %# Cell array of random x and y coordinates 
E = num2cell(ceil(10*rand(N,1))); %# Cell array of random integers from 1 to 10 
nodes = struct('x',coords(:,1),... %# Assign x coordinates 
       'y',coords(:,2),... %# Assign y coordinates 
       'energy',E);   %# Assign energy 

Vous pouvez trouver le nœud avec un maximum d'énergie en utilisant la fonction MAX:

[maxValue,maxIndex] = max([nodes.energy]); 

et vous pouvez trouver la distance entre une paire de noeuds de la manière suivante:

index = [1 3]; %# Compare nodes 1 and 3 
dist = sqrt(diff([nodes(index).x])^2+diff([nodes(index).y])^2); 
+0

merci encore gnovice, merci beaucoup mon ami .... – gurwinder