Japan QualNet Community Forums Japan QualNet Community Forums
Welcome Guest 
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
検索
メインメニュー
アクセスカウンター
2024/05/02:7/8
2024/05/01:21/26

2024/03/03より299/1375
人気モジュール
No.1: フォーラム 72
No.2: QualNet概要 1
日曜日からの合計
人気Browser&OS
No.1:巡回ロボット65
No.2:Windows NT1

No.1:どっかの巡回ロボット63
No.2:Safari1
No.3:Majestic-12巡回ロボット1

日曜日からの合計
メイン
   Tools: QualNet Analyzer & QualNet Packet Tracer
     Packet Error Rateの調べ方
投稿するにはまず登録を

題名 投稿者 日時
   Packet Error Rateの調べ方 amigo 2007/12/6 17:03
     Re: Packet Error Rateの調べ方 hiro 2007/12/6 18:51
     » Re: Packet Error Rateの調べ方 mast 2007/12/6 21:00
         Re: Packet Error Rateの調べ方 hiro 2007/12/7 10:36
           Re: Packet Error Rateの調べ方 amigo 2007/12/20 14:54
フラット表示 前のトピック | 次のトピック
投稿者 スレッド
mast
投稿日時: 2007/12/6 21:00
一人前
登録日: 2005/4/7
居住地:
投稿: 93
Re: Packet Error Rateの調べ方
ちょっと補足(というか確認?)です。
hiroさんが指しているのは、
「コード上のその箇所でPERが取れる」と言う意味ではなく、
「その箇所でやっているやり方を真似したら、各パケットに対するPERが取れる」
という意味ですよね?(その関数はradio_range.exeが使う関数だと思うので。。)

もしシミュレーション実行中の各パケットに対するPERを取りたいということなら、

例えばPHYのタイプが"Abstract-PHY"なら、
phy_abstract.cppにあるPhyAbstractCheckRxPacketError()関数の中の以下の箇所で取れるerrorProbability
がそのパケットに対するPER(パケットエラーになり得る確率)です。
00154         BER = PHY_BER(phy_abstract->thisPhy,
00155                       0,
00156                       sinr);
00157 
00158         if (BER != 0.0) {
00159             double numBits =
00160                 ((double)(getSimTime(node) - phy_abstract->rxTimeEvaluated)
00161                  * (double)phy_abstract->dataRate /(double)SECOND);
00162 
00163 
00164             double errorProbability = 1.0 - pow((1.0 - BER), numBits);


例えばPHYのタイプが"802.11a/b"なら、
phy_802_11.cppにあるPhy802_11CheckRxPacketError()関数の中の以下の箇所で取れるerrorProbabilityがそのパケットに対するPER(パケットエラーになり得る確率)です。
00174     BER = PHY_BER(phy802_11->thisPhy,
00175                   phy802_11->rxDataRateType,
00176                   sinr);
00177 
00178     if (DEBUG)
00179         printf("802_11.cpp: %d,  %d, %d\n", 
00180                 node->nodeId,
00181                 phy802_11->rxDataRateType,  
00182                 phy802_11->thisPhy->snrBerTables[phy802_11->rxDataRateType]);
00183 
00184     if (BER != 0.0) {
00185         double numBits =
00186             ((double)(getSimTime(node) - phy802_11->rxTimeEvaluated) *
00187              (double)phy802_11->dataRate[phy802_11->rxDataRateType] /
00188              (double)SECOND);
00189 
00190         double errorProbability = 1.0 - pow((1.0 - BER), numBits);


・・・と私は解釈していますが、合ってますよね?
フラット表示 前のトピック | 次のトピック
Copyright c KOZO KEIKAKU ENGINEERING Inc. All Rights Reserved.
XOOPS Cube PROJECT