角度平均


7

私は、大部分は機能する802.11aの復調に取り組んでいますが、断続的なエラーを引き起こすバグがあります。特性評価はまだ完了していませんが、イコライザーブロックに問題があるようです。

802.11aはOFDM信号であり、各OFDMシンボルには64のサブチャネルがあります。それらのサブチャネルのうちの4つは、サブチャネル7、21、-7、および-21でのパイロット(既知のデータ)です。パイロットを使用して、残りのキャリアオフセット(パイロットでは一定の位相オフセットとして表示されます)とタイミングオフセット(ライナーオフセットとして表示されます)を修正します。つまり、位相オフセットはビン0で0であり、ビン0)。

単純な平均化を行ってキャリアオフセット位相を検出し、平均化の前にいくつかの簡単な操作を行って時間位相オフセットを検出します(たとえば、チャネル-21を-1で乗算、チャネル-7を-3で乗算、チャネル7を3で乗算)。不必要な詳細は意図的に省いていますが、これが私がやっていることの要点になれば幸いです。

私の問題は、角度が円形であるため、特定の値に対して、平均化が壊滅的な方法で誤動作する可能性があることです。たとえば、平均化および想像してみてください。答えがまたはであることをグラフィカルに表示するのは簡単ですが、標準の平均化式では0という答えが得られます。これは文字通り正しい答えの反対です。45π45πππ

ここに画像の説明を入力してください

角度を平均化する適切な方法は何ですか?

編集:私がやろうとしていることを少し明確にしてみます。FFTの出力で異なる形で現れる2つの「エラー状態」があります。1つはキャリアオフセットで、一定の位相オフセットとして現れます。

ここに画像の説明を入力してください

この場合、Johnが示唆したように、角度ではなくデカルトパイロット値を平均化することは良い考えです。ありがとうございました。

2番目のエラー条件はタイミングオフセットで、線形位相オフセットとして現れます。時間オフセットが大きいほど、位相オフセットの傾きが大きくなります。レシーバーが前方または後方にあるかどうかに応じて、勾配が負になることもあります。

ここに画像の説明を入力してください

これは厳密に線形(原点がゼロを通過する)なので、理論的には1つのパイロットからのみ勾配を計算できます。最初にキャリアオフセット位相オフセット(つまり、エラー条件#1)を計算し、それを差し引いてから、4つのうちのいずれかを使用して勾配を計算します。それは完全に平均化を回避します。問題は、ノイズによってこれらの値が急激に変動する可能性があることです。そのため、4つすべてを使用する場合、つまり平均化すると、私の見積もりははるかに良くなります。

うまくいけば、上の画像から、パイロット値をそのままで平均化することはできないことがわかります。一定の+ノイズになるように変更する必要があります。これを行うには、-21パイロットの角度に-1、-7パイロットに-3、7パイロットに3、21パイロットに1を掛けます。これにより、21パイロットと同等になり、平均化できます。

ここに画像の説明を入力してください

直交座標系で「3」のような定数をベクトルの角度に掛ける良い方法がわからないので、極座標に変換し、角度に-1を掛ける必要があるように見えます-3、3、1はそれぞれデカルト座標に変換し、パイロットを平均化してから、極座標に変換して位相オフセットを取得します。これは実行可能ですが、可能であれば、より扱いにくいソリューションを見つけたいと思います。


5
私は常に複素数を平均し、その結果の角度をとります。
John

1
@Johnの方法もお勧めします。実際に複素数を加算すると、例では角度を生成する複素平面でのベクトル加算に対応します。平均化はマグニチュードにのみ影響するため、結果の角度をとることで十分です(数値の範囲の制限が問題でない限り)π
Deve

@Johnそれは非常に良い点ですが、平均化する前に "7"チャネルの角度に3を掛けたい時間/位相オフセットの場合のように、それを行う良い方法がわかりません。私は極座標に変換し、3を掛けてデカルトに変換し、平均値に変換してから、極座標に変換できると思いますが、それは非常に扱いにくいです。
ジム・クレイ

@JimClay:なぜ値を一緒に平均化するのですか?それはあなたの説明から明らかではありません。一般に、実際に一貫性のある値でない限り、値を一貫して平均化しないでください。さもなければ、あなたが気づいた破壊的な干渉を受けます。もう少し詳細が役立つと思います。
Jason R

回答:


5

編集で指摘したように、値の平均化はこの種の問題にはあまり適していません。単純な代替案は、線形最小二乗近似を使用して、ラインを4つの位相測定値に単に近似することです。これは、シングルポイントアプローチよりもパフォーマンスが良くなるはずです。

おそらくさらに良い解決策は、正弦波を4つの複雑なサンプルに当てはめることです。これにより、位相角を最初に計算する必要がなくなり、低SNRでパフォーマンスが低下する可能性があります。

また、複素数のフェーズに3を掛けるという元の目標を達成するには、各数値を3乗するだけでそれを行うことができます。

argバツ=argバツ

これは明らかに各サンプルの大きさに影響しますが、フェーズのみを懸念している場合は、通常、それを回避できます。ただし、これを行うと、推定器が機能するタイミングオフセットの範囲が制限されます。複素数の位相を3倍すると、2π/ 出力の位相のあいまいさ(つまり、位相のシフトを検出できません) 2π/)。これは、PSK同期システム(Costasループなど)でよく見られる位相のあいまいさと似ています。


3

方向性にアプローチする通常の方法は、(複雑な)ベクトルアプローチに移動することです。

たとえば、観測が周期的で周期的である場合 P その後の平均 N 観察、 α^ 上記のリンクの方程式(1)に従って見つけることができます。

μ^P=P2π[argΣ=0N1ej2πα^/P]2π
スケーリングする α^ 定期的に 2π、単位ベクトルの複素和を実行し、複素和の引数(角度)を取得して、最終的にinに再スケーリングします [0P

同様のアプローチを使用して、「循環サンプル分散」を取得できます。


0

からドメインを変更します [π+π[02π そしてすべてを法として扱う 2π。次に、負の角度を処理する必要はありません。

または、ジョンが述べたように、実際の角度が必要なところまですべてに複素数を使用します。


2
問題は、問題が発生した場所に移動するだけで、問題が解決されないことです。たとえば、次の角度を想像してください。0.1 との角度 2π0.1。「平均」はπもちろん、これは間違った答えです。
ジム・クレイ

ええ、あなたは正しいです。atan2関数の計算方法のような象限ベースのアプローチを行う必要があります。同じ理由で、±π (または 0/2π)。それは平均を実行するのに向いていません。
Ryan Johnson

0

これは、過去に「平均角度」を見つけるために使用した簡単なハックです。それは少し不格好で、私が望むよりも多くのマジックナンバーを使用しますが、少なくともそれは速くて効率的であり、単純な算術平均がもたらす壊滅的な失敗はありません。

// median_average: find the "average angle" from some set of angles.
// pick A and B "well separated" from each other and from 0 --
// perhaps A =~= 2pi/3 and B =~= 4pi/3
average0 = (average{ (angles .- 0) mod 2pi } + 0) mod 2pi
averageA = (average{ (angles .- A) mod 2pi } + A) mod 2pi
averageB = (average{ (angles .- B) mod 2pi } + B) mod 2pi
average = median ( average0, averageA, averageB )

私は通常、「ブラッド」表現のようなもので角度を格納するため、「mod 2pi」操作は迅速な「bitand MASK」です。

3つの中間平均の中央値は、常に2pi / 3未満の間隔である2つの角度に対して「正しい」平均を与えるという証拠があります。5つの中間平均の中央値は、4pi / 5未満の任意の2つの角度の「正しい」平均を常に与えます。

この「median_average」アルゴリズムが「離れすぎていない」2つの角度を平均すると、3つの中間単純平均のうち最大で1つが壊滅的に間違った値になります(最大で5つの中間平均のうち2つ)。(すでに述べたように、0.1と2pi-0.1を平均しようとすると、「average0」の値は完全に間違っています。)次に、最後のmedian()は「間違った」値(ある場合)をスローし、2つの正しい平均の1つを返します。

(タイミングオフセットが非常に悪く、位相オフセットが+ piラインを横切って-piに「ラップアラウンド」する可能性を考慮したことがありますか?システムで発生しない幸運なことに、おそらく幸運です)。


0

角度の平均を計算するには、Mardia KV、Jupp PE(2009、Directional Statistics、Vol。494 Hoboken、NJ:Wiley)で定義され、このペーパーで使用されている循環統計を使用できます10

式10の背後にある考え方は、循環量の平均を計算するために、位置と方向を最初に角度に変換する必要があるということです。次に、角度を2D単位円に投影して、算術平均を計算します。その後、平均位置が形成する角度は、角度から空間に変換されます。ポジションの場合、これは次の形式を取ります。

バツpredett=1+12πarctan2ΣNeバツcpt2πバツπΣNeバツcptcos2πバツπ

あなたの文脈では、あなたは持っています N 対策 θ 確率あり p、 平均 θ 等しい:

θ=arctan2ΣNp2πθπΣNpcos2πθπ

うん、それは基本的に私が提案したアプローチと同じです... θあなたが持っている方程式は間違っています。私は信じています1+ 必要ではなく、 12π。私が正しいと思うものに一致するように編集されました。YMMV。
Peter K.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.