unwrap
平移相位角
说明
Q = unwrap(
展开向量 P
)P
中的弧度相位角。每当连续相位角之间的跳跃大于或等于 π 弧度时,unwrap
就会通过增加 ±2π 的整数倍来平移相位角,直到跳跃小于 π。如果 P
是矩阵,unwrap
将按列运算。如果 P
是多维数组,unwrap
将对大小大于 1 的第一个维度进行运算。
示例
螺旋线的正确相位角
定义相位角为 0 至 的螺旋线的 坐标和 坐标。绘制螺旋线。
t = linspace(0,6*pi,201); x = t/pi.*cos(t); y = t/pi.*sin(t); plot(x,y)
使用 atan2
函数基于螺旋线的 和 坐标求其相位角。atan2
函数返回范围在 到 的闭区间内的角度值。
P = atan2(y,x); plot(t,P)
请注意,该图有不连续性。使用 unwrap
消除不连续性。当 P
的连续元素之间的相位差大于或等于跳跃阈值 弧度时,unwrap
会将角度增加 的倍数。平移后的相位角 Q
位于从 0 到 的区间内。
Q = unwrap(P); plot(t,Q)
使用不同阈值平移相位角
移动频率响应的相位角。相位曲线有两次跳跃。第一次跳跃发生在 W = 3
和 W = 3.4
之间,跳跃幅度为 3.4250
弧度,第二次跳跃发生在 W = 5
和 W = 5.4
之间,跳跃幅度为 6.3420
弧度。绘制相位曲线。
clear; close all; 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
。
P = [0 7.07; 0.19 0.98; 6.67 1.18; 0.59 1.37; 0.78 1.56]
P = 5×2
0 7.0700
0.1900 0.9800
6.6700 1.1800
0.5900 1.3700
0.7800 1.5600
与其余数据相比,相位角 P(1,2) = 7.07
和 P(3,1) = 6.67
的相位差大于 。
首先按列比较元素以展开相位角。将 dim
参量指定为 1。通过将第二个参量指定为 []
,使用默认跳转阈值 。
dim = 1; P1 = unwrap(P,[],dim)
P1 = 5×2
0 7.0700
0.1900 7.2632
0.3868 7.4632
0.5900 7.6532
0.7800 7.8432
要按行而不是按列平移相位角,请将 dim
指定为 2 而不是 1。
dim = 2; P2 = unwrap(P1,[],dim)
P2 = 5×2
0 0.7868
0.1900 0.9800
0.3868 1.1800
0.5900 1.3700
0.7800 1.5600
输入参数
P
— 输入数组
向量 | 矩阵 | 多维数组
输入数组,指定为向量、矩阵或多维数组。
数据类型: single
| double
tol
— 要应用相移的跳转阈值
pi
(默认) | 标量
要应用相移的跳转阈值,指定为标量。低于 π 的跳转阈值与默认阈值 π 具有相同的效果。
数据类型: single
| double
dim
— 沿其运算的维度
正整数标量
沿其运算的维度,指定为正整数标量。如果未指定值,则默认值是大小不等于 1 的第一个数组维度。
unwrap(P,[],1)
沿P
的各列进行运算,并返回每列平移后的相位角。unwrap(P,[],2)
沿P
的各行进行运算,并返回每行平移后的相位角。
如果 dim
大于 ndims(P)
,则 unwrap(P,[],dim)
返回 P
。
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
输出参量
Q
— 平移后的相位角
向量 | 矩阵 | 多维数组
平移后的相位角,以向量、矩阵或多维数组形式返回。输出 Q
的大小始终与输入 P
的大小相同。
数据类型: single
| double
扩展功能
C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。
用法说明和限制:
仅当前两个输入都是向量和非标量时,才支持行向量输入。
在输出类中执行算术运算。因此,由于舍入误差不同,结果可能与 MATLAB® 不匹配。
基于线程的环境
使用 MATLAB® backgroundPool
在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool
加快代码运行速度。
此函数完全支持基于线程的环境。有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
GPU 数组
通过使用 Parallel Computing Toolbox™ 在图形处理单元 (GPU) 上运行来加快代码执行。
此函数完全支持 GPU 数组。有关详细信息,请参阅在 GPU 上运行 MATLAB 函数 (Parallel Computing Toolbox)。
分布式数组
使用 Parallel Computing Toolbox™ 在集群的组合内存中对大型数组进行分区。
此函数完全支持分布式数组。有关详细信息,请参阅使用分布式数组运行 MATLAB 函数 (Parallel Computing Toolbox)。
版本历史记录
在 R2006a 之前推出
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)