要計算乙個系統相頻特性,就要用到反正切函式,計算機中反正切函式規定,在
一、二象限中的角度為0~pi,三四象限的角度為0~-pi。
若乙個角度從0變到2pi,但實際得到的結果是0~pi,再由-pi~0,在w=pi處發生跳變,跳變幅度為2pi,這就叫相位的捲繞。
unwrap(w)就是解捲繞,使相位在pi處不發生跳變,從而反應出真實的相位變化 "
檢視 unwrap 的幫助文件可以發現 unwrap 還可以輸入乙個引數 tol,預設tol = pi。也許你需要根據情況修改下 tol。
對於一般的數列,直接使用unwrap(pha)就可以了unwrap(p) unwraps radian phases p by changing absoluteunwrap功能檢查出資料相位跳變,並糾正跳變
實際上在檢查是否跳變的時候是有個標準的
unwrap(pha,tol)
這個tol就是標準,在預設的情況下,這個標準是pi
也就是說unwrap在檢查到資料前後兩點的差距在超過tol的時候,就認為有跳變
然後就回處理資料,讓後面的資料加2pi或者減2pi是資料連續
大部分情況下使用pi這個標準都比較合適,所以第二個引數可以預設
特殊情況下是可以通過設定tol調整鑑別標準
而unwrap函式不單能對數列作用,還能對矩陣作用
實現對矩陣每一行或者每一列實施相位矯正
所以完整的格式是unwrap(pha,tol,dim)
最後乙個引數dim表示需要對矩陣的行,還是列進行unwrap操作
如果對列每一列操作,那麼第三個引數可以預設
而要對每一行操作,那麼第三個引數填2
unwrap(pha,,2)
表示對矩陣phi中的相位資料,每一行實施相位矯正
使用預設的檢測跳變標準
jumps greater than or equal to pi to their 2*pi complement.
it unwraps along the first non-singleton dimension of p
and le**es the first phase value along this dimension
unchanged. p can be a scalar, vector, matrix, or n-d array.
unwrap(p,tol) uses a jump tolerance of tol rather
than the default tol = pi.
unwrap(p,,dim) unwraps along dimension dim using the
default tolerance. unwrap(p,tol,dim) uses a jump tolerance
of tol.
class support for input p:
float: double, single
see also angle, abs.
overview of the algorithm:
reshape p to be a matrix of column vectors. perform the
unwrap calculation column-wise on this matrix. (note that this is
equivalent to performing the calculation on dimension one.)
then reshape the output back.
atan和atan2反正切計算
typedef struct point point 給定兩個點 point a x1,y1 b x2,y2 使用反三角函式atan求斜率,原型如下 float atan float arg double atan double arg long double atan long double ar...
C語言中的atan和atan2
在c語言的math.h或c 中的cmath中有兩個求反正切的函式atan double x 與atan2 double y,double x 他們返回的值是弧度 要轉化為角度再自己處理下。前者接受的是乙個正切值 直線的斜率 得到夾角,但是由於正切的規律性本可以有兩個角度的但它卻只返回乙個,因為ata...
C語言中的atan和atan2
c語言中的atan和atan2 在c語言的math.h或c 中的cmath中有兩個求反正切的函式atan double x 與atan2 double y,double x 他們返回的值是弧度 要轉化為角度再自己處理下。前者接受的是乙個正切值 直線的斜率 得到夾角,但是由於正切的規律性本可以有兩個角...