2017-06-01 1 views
-2

enter image description hereは、私がNS2で平均パケット移動速度を計算する必要がAWK

を使用してNS2に平均パケット移動速度を計算します。私はこの式をawkプログラムに書く必要があります。しかし、私はそれをどうやって行うのか分かりません。 nは受信パケット数、sはパケット送信時の距離です。どんな答えでも非常に役立ちます。ありがとう。

+2

ようこそStackOverflow。 「画像の説明を入力」、すなわち、リンクされた数式が何をするかを記述する。その後、アルゴリズムの概要を示す擬似コードを作成します。その後、awkについてのあなたの知識を適用して、それを実行しようとします。次にawkコードをここに追加して特定の質問をします。 awkの初心者の方のために、awkチュートリアルの作業が役に立ちます。あなたは[ツアー]を取ることから始めたいと思うかもしれません。 [mcve]を作ることは、あなた自身やあなたを助けようとする人にとって非常に有用なことです。 – Yunnosch

+0

お試しいただいたことをお見せしたら、サポートを開始することができます。 – CWLiu

+0

あなたの数式は間違っています!総和指数(「i」)は、「n」から「n」に進む。 't'も' s'も 'i'に依存しません。 – karakfa

答えて

0
function topla(array) {sum=0; for (i in array) {sum=sum+250/array[i];}return sum;} 

BEGIN { 
total_packets_sent = 0; 
total_packets_received = 0; 
total_packets_dropped = 0; 
first_packet_sent = 0; 
last_packet_sent = 0; 
last_packet_received = 0;} 


{event = $1; time = $2; node = $3; type = $4; reason = $5; packetid = $6; 



if (time < simulation_start || simulation_start == 0) 
    simulation_start = time; 
if (time > simulation_end) 
    simulation_end = time; 



if (type == "AGT") { 
    nodes[node] = node; # to count number of nodes 
    if (time < node_start_time[node] || node_start_time[node] == 0) 
     node_start_time[node] = time; 

    if (time > node_end_time[node]) 
     node_end_time[node] = time; 

    if (event == "s") { 
     flows[node] = node; # to count number of flows 
     if (time < first_packet_sent || first_packet_sent == 0) 
      first_packet_sent = time; 
     if (time > last_packet_sent) 
      last_packet_sent = time; 
     # rate 
     packets_sent[node]++; 
     total_packets_sent++; 

     # delay 
     pkt_start_time[packetid] = time; 
    } 
    else if (event == "r") { 
     if (time > last_packet_received) 
      last_packet_received = time; 
     # throughput 
     packets_received[node]++; 
     total_packets_received++; 

     # delay 
     pkt_end_time[packetid] = time; 
    } 
}}` 

END { 



# delay 
for (pkt in pkt_end_time) { 
    end = pkt_end_time[pkt]; 
    start = pkt_start_time[pkt]; 
    delta = end - start; 
    if (delta > 0) { 
     delay[pkt] = delta; 

    } 
} 

result=topla(delay)/total_packets_received; 

printf(result) 

}

私はこのawkプログラムを書きます。しかし、ゼロ点で除算を試みました。そして、トプラ関数の送信範囲を250と書きましたが、私が望む結果は得られませんでした。送信範囲はどうすればいいですか?

関連する問題