numpy的unwrap函數__函數

來源:互聯網
上載者:User

最近處理相位角的時候用到了這個函數,所以在這裡稍稍用一點篇幅來記錄一下我的理解.

unwrap函數究竟是用來是用來幹什麼的呢?它是用來解卷繞的.

至於什麼是卷繞,網上的說法是:

要計算一個系統相頻特性,就要用到反正切函數,電腦中反正切函數規定,在一、二象限中的角度為0~pi,三四象限的角度為0~-pi。
若一個角度從0變到2pi,但實際得到的結果是0~pi,再由-pi~0,在w=pi處發生跳變,跳變幅度為2pi,這就叫相位的卷繞。


如上圖所示,如果相位角從-0.99pi出發,逆時針旋轉,穿過x軸的負半軸,到達第三相限,那麼根據定義,此時它的角度會直接由pi變為-pi,會有一個2pi的跳變,這樣的話,如果將旋轉的角度繪製成映像的話,事實上映像是不連續的,為了修正這種跳變,所以有了unwrap.

unwrap究竟做了什麼事情呢?它只是檢測相鄰的兩個值a和b,如果abs(a-b) > tol, 那麼現在要對b進行修正,通過對b增加或者減少2pi,消除這個突然的跳變,這裡的tol其實是unwrap函數的一個參數,預設為pi.

舉個例子:

out[196]: a = np.array([3.13, -3.12, 3.12, 3.13, -3.11])in [197]: aOut[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,所以要對-3.12增加一個2pi進行修正,變為了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])

看到沒有,上面的結果是不是很出人意表,什麼鬼,居然出現了大於pi的角度.

這是因為,unwrap其實包含了一個前提(從運作機制也看得到),這些角度是有時序的.對於序列[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…,……

總體而言,unwrap通過比較相鄰的a和b,考慮a的值,對b進行修正.

所以盡量不要用unwrap對隨機的角度進行校正,沒有意義.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.