我正在与Mathworks的人讨论:
unwrap函数,除了π之外还有一个“bug”跳跃容差,并希望得到一些其他的观点:
Description
Q = unwrap(P) corrects the radian phase angles in a vector P by adding multiples of ±2π when absolute jumps between consecutive elements of P are greater than or equal to the default jump tolerance of π radians. If P is a matrix, unwrap operates columnwise. If P is a multidimensional array, unwrap operates on the first nonsingleton dimension.
Q = unwrap(P,tol)uses a jump tolerance tol instead of the default value, π.
文档有两种可能的解释:
> Q =展开(P,tol)通过在P的连续元素之间的绝对跳跃大于或等于tol弧度时加上±2π的倍数来校正向量P中的弧度相位角.如果P是矩阵,则unwrap按列操作.如果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)通过在P的连续元素之间的绝对跳跃大于或等于tol时加上±2 * tol的倍数来校正向量P中的元素.如果P是矩阵,则unwrap按列操作.如果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相匹配,那么展开可以用作缓慢变化输入的mod的逆,即展开(mod(x,T),T / 2)= x对于向量x,其中连续元素变化小于tol = T / 2.
请注意,第二种解释比角度更通用,并且可以用环绕周期T展开任何内容.(对于弧度,默认值T =2π,对于度数是360,对于8位数字是256,对于16位数字是65536,等等.)
所以我的问题是:
行为#1是否有可能用途?哪种解释更有意义?