2026a

# 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

# 另请参阅

abs | angle | atan