# unwrap
平移相位角
函数库: TyMath
# 语法
Q = unwrap(P)
Q = unwrap(P,tol)
Q = unwrap(P,[],dim)
Q = unwrap(P,tol,dim)
# 说明
Q = unwrap(P) 展开向量 P 中的弧度相位角。每当连续相位角之间的跳跃大于或等于 π 弧度时,unwrap 就会通过增加 ±2π 的整数倍来平移相位角,直到跳跃小于 π。如果 P 是矩阵,unwrap 将按列运算。如果 P 是多维数组,unwrap 将对大小大于 1 的第一个维度进行运算。示例
Q = unwrap(P, tol) 将 P 元素之间的跳跃与跳跃阈值 tol 进行比较,而不是与默认值 π 弧度进行比较。如果您指定的跳跃阈值小于 π,unwrap 将使用默认的跳跃阈值 π。示例
Q = unwrap(P, [], dim) 沿维度 dim 展开。示例
Q = unwrap(P, tol, dim) 使用跳跃阈值 tol 沿维度 dim 展开。
# 示例
螺旋线的正确相位角
定义相位角为 0 至 6π 的螺旋线的 x 坐标和 y 坐标。绘制螺旋线。
using TyPlot
using TyMath
t = LinRange(0,6pi,201)
x = t/pi.*cos.(t)
y = t/pi.*sin.(t)
plot(x,y)
使用 atan 函数基于螺旋线的 x 和 y 坐标求其相位角。atan 函数返回范围在 −π 到 π 的闭区间内的角度值。
P = atan.(y,x)
plot(t,P)
请注意,该图有不连续性。使用 unwrap 消除不连续性。当 P 的连续元素之间的相位差大于或等于跳跃阈值 π 弧度时,unwrap 会将角度增加 ±2π 的倍数。平移后的相位角 Q 位于从 0 到 6π 的区间内。
Q = unwrap(P);
plot(t,Q);
使用不同阈值平移相位角
移动频率响应的相位角。相位曲线有两次跳跃。第一次跳跃发生在 W = 3 和 W = 3.4 之间,跳跃幅度为 3.4250 弧度,第二次跳跃发生在 W = 5 和 W = 5.4 之间,跳跃幅度为 6.3420 弧度。绘制相位曲线。
using TyPlot
using TyMath
W = [0:0.4:3..., 3.4:0.4:5..., 5.4:0.4:7...]
P = [-1.5723
-1.5747
-1.5790
-1.5852
-1.5922
-1.6044
-1.6269
-1.6998
1.7252
1.5989
1.5916
1.5708
1.5582
-4.7838
-4.8143
-4.8456
-4.8764
-4.9002]
plot(W,P,"bo-")
使用 unwrap 按默认跳跃阈值 π 弧度来平移相位角。绘制平移后的相位曲线。两次跳跃都发生了平移,因为它们大于跳跃阈值 π 弧度。
plot(W,unwrap(P),"ro-")
现在使用 5 弧度的跳跃阈值平移相位角。绘制平移后的相位曲线。第一次跳跃不会平移,因为它小于跳跃阈值 5 弧度。
plot(W,unwrap(P,5),"ro-")
将相移应用于矩阵
定义包含相位角的两列矩阵 P。
using TyMath
using TyPlot
P = [0 7.07; 0.19 0.98; 6.67 1.18; 0.59 1.37; 0.78 1.56]
P = 5×2 Matrix{Float64}:
0.0 7.07
0.19 0.98
6.67 1.18
0.59 1.37
0.78 1.56
与其余数据相比,相位角 P[1,2] = 7.07 和 P[3,1] = 6.67 的相位差大于 π。
首先按列比较元素以展开相位角。将 dim 参数指定为 1。通过将第二个参数指定为 [],使用默认跳转阈值 π。
dim = 1
P1 = unwrap(P,[],dim)
P1 = 5×2 Matrix{Float64}:
0.0 7.07
0.19 7.26319
0.386815 7.46319
0.59 7.65319
0.78 7.84319
要按行而不是按列平移相位角,请将 dim 指定为 2 而不是 1。
dim = 2
P2 = unwrap(P1,[],dim)
P2 = 5×2 Matrix{Float64}:
0.0 0.786815
0.19 0.98
0.386815 1.18
0.59 1.37
0.78 1.56
# 输入参数
P - 输入数组向量 | 矩阵 | 多维数组
输入数组,指定为向量、矩阵或多维数组。
数据类型: Int64 | Int32 | Int16 | Int128 | Float64 | Float32 | Float16
tol - 要应用相移的跳转阈值pi(默认) | 标量
要应用相移的跳转阈值,指定为标量。低于 π 的跳转阈值与默认阈值 π 具有相同的效果。
数据类型: Int64 | Int32 | Int16 | Int128 | Float
dim - 沿其运算的维度正整数标量
沿其运算的维度,指定为正整数标量。如果未指定值,则默认值是大小不等于 1 的第一个数组维度。
- unwrap(P,[],1) 沿 P 的各列进行运算,并返回每列平移后的相位角。
- unwrap(P,[],2) 沿 P 的各行进行运算,并返回每行平移后的相位角。
如果 dim 大于 ndims(P),则 unwrap(P,[],dim) 返回 P。
数据类型: Int64 | Int32 | Int16 | Int128 | Float | UInt8 | UInt16 | UInt32 | UInt64
# 输出参数
Q - 平移后的相位角向量 | 矩阵 | 多维数组
平移后的相位角,以向量、矩阵或多维数组形式返回。输出 Q 的大小始终与输入 P 的大小相同。
数据类型: Int64 | Int32 | Int16 | Int128 | Float