numpyのアンラップ関数



Numpys Unwrap Function



最近、位相角を扱うときにこの関数を使用したので、ここでは少しスペースを使用して理解を記録します。

アンラップ関数は正確には何に使用されますか?アンラップに使用されます。



曲がりくねっているものに関しては、オンライン声明は次のとおりです。

システムの位相周波数特性を計算するには、アークタンジェント関数を使用します。コンピューターのアークタンジェント関数は、第1象限と第2象限の角度が0〜piであり、第3象限と第4象限の角度が0〜-piであることを指定します。
角度が0から2piに変化しても、実際の結果が0〜piの場合、-pi〜0から、w = piでジャンプが発生し、ジャンプ振幅は2piです。これは位相巻線と呼ばれます。



画像
上の図に示すように、位相角が-0.99piから始まり、反時計回りに回転し、x軸の負の半軸を通過し、3番目の位相限界に達すると、定義によれば、角度は次のようになります。 piから-piに直接変更すると、2piのジャンプがあります。この場合、回転角が画像に描画されると、画像は実際には不連続になります。このジャンプを修正するために、アンラップがあります。

unwrapは正確に何をしますか? 2つの隣接する値aとbを検出するだけです。 abs(ab)> tolの場合、bは修正され、bは2piだけ増減されて、この突然のジャンプの変更を排除します。ここでのtolは、実際にはアンラップ関数のパラメーターです。デフォルトはpiです。

例えば:



out[196]: a = np.array([3.13, -3.12, 3.12, 3.13, -3.11]) in [197]: a Out[197]: array([ 3.13, -3.12, 3.12, 3.13, -3.11]) in [198]: np.unwrap(a) Out[198]: array([ 3.13 , 3.16318531, 3.12 , 3.13 , 3.17318531])

上記のコードでは、角度が3.13から-3.12に変わると、3.13 + 3.12> piなので、変更するには2piを-3.12に追加する必要があり、3.16318531になります。次に、修正なしで3.16318531と3.12を比較し、3.12と-3.11の比較を続け、-3.11に2piを追加して3.17318531になると、修正が完了します。

この機能を使用する際に特に注意する必要があるのは、 この機能を台無しにしないでください
以前に市場を理解していなかったとき、私はよく次のように、リラックスするためのルールのない角度のリストを使用しました。

In[207]: phase = np.array([2.67, -0.92, -1.37, -0.58, 0, 0,78, -2.94]) In[208]: np.unwrap(phase) Out[208]: array([ 2.67 , 5.36318531, 4.91318531, 5.70318531, 6.28318531, 6.28318531, 8.88496162, 9.62637061])

それを見て、上記の結果は非常に予想外ですか?

これは、アンラップには実際には前提が含まれているためです(これは操作メカニズムからも確認できます)。これらの角度は連続しています。シーケンス[a、b、c]の場合、オブジェクトは最初に角度aにあり、次に角度bに到達し、最後にちょうどc角度に到達する必要があります。

上記では、2.67->-0.92から、-0.92に2pi補正を追加し、比較のために5.36 ...、5.36 ...、および-1.37を取得し、-1.37は比較のために4.91 ...、4.91 ...、および-0.58になります。 、-0.58変更5.70 ...、5.70 ...と0、0を比較すると、2piが直接追加され、6.28 ...、..になります。

一般に、アンラップは、aの値を考慮して、隣接するaとbを比較することによってbを修正します。

したがって、アンラップを使用してランダムな角度を修正しないようにしてください。これは無意味です。