我與來自Mathworks公司的人討論我回復:unwrap
功能,擁有比其他π跳公差在它「錯誤」,並希望得到一些其他觀點:MATLAB:解包功能
說明
Q = unwrap(P)
通過添加&plusmn倍數校正在矢量P弧度的相位角; 2,當P的連續元件之間的絕對跳轉大於或等於的π弧度默認跳躍公差π。如果P是一個矩陣,則解包操作以列爲單位。如果P是一個多維數組,則unwrap將在第一個非單一維上運行。
Q = unwrap(P,tol)
使用跳轉公差tol而不是默認值π。
有文檔的兩種可能的解釋:
Q = unwrap(P,tol)
通過添加&plusmn倍數校正在矢量P弧度的相位角; P的連續元件之間的2個π當絕對跳轉被更大大於或等於tol弧度。如果P是一個矩陣,則解包操作以列爲單位。如果P是一個多維數組,則unwrap將在第一個非單一維上運行。實施例:
>> x = mod(0:20:200,100); unwrap(x, 50) ans = 0 20.0000 40.0000 60.0000 80.0000 81.6814 101.6814 121.6814 141.6814 161.6814 163.3628
Q = unwrap(P,tol)
通過添加&plusmn倍數校正在矢量P的元素; 2 * TOL當P的連續元件之間的絕對跳轉大於或等於TOL。如果P是一個矩陣,則解包操作以列爲單位。如果P是一個多維數組,則unwrap將在第一個非單一維上運行。實施例:
>> x = mod(0:20:200,100); unwrap(x, 50) ans = 0 20 40 60 80 100 120 140 160 180 200
的unwrap()
MATLAB中的實際行爲(至少到R2010a版本)爲#1。我對unwrap()
的解釋是它應該是#2,因此在行爲上存在一個錯誤。如果unwrap()
的行爲與#2匹配,則對於緩慢變化的輸入,即,對於矢量x,其中連續元素變化小於tol = T/2,則解纏可以用作mod的逆。
請注意,此第二種解釋比角度更一般,並且可以用環繞週期T解開任何東西。(對於弧度,是否默認爲T = 2 π,對於度數爲360,對於8位數字是256,對於65536 16位號碼等)
所以我的問題是:
是行爲#1有可能的用途?哪種解釋更有意義?
有趣......我的解釋#2的觀點是(正如你所提到的)那裏真的沒有任何特定的與弧度,度數或任何角度的聯繫,除了環繞時期,默認情況下是2pi,但可以是任何東西(對於度數是360,對於16位整數是65536等)。跳躍寬容應該是環繞期的1/2 ...我不確定爲什麼你會選擇兩者之間的不同關係。 – 2010-07-07 16:39:12
我想你可以有兩種方法來實現這個功能。無論是特定於弧度(如文檔中所述),並且您可以自由選擇跳轉公差。或者你在1/2環繞時修復跳轉容限,並且你將該輸入用於任何類型的範圍。 – Jonas 2010-07-07 18:28:38
我會爲後者投票,但這只是我的承擔。我可能最終只是編寫自己的函數(這是相當簡單的),而不再依賴於Mathworks的正確運行的unwrap()實現。 – 2010-07-07 20:45:16