作者:阿芙2011 | 来源:互联网 | 2023-06-01 14:17
网上的说法:
要计算一个系统相频特性,就要用到反正切函数,计算机中反正切函数规定,在一、二象限中的角度为0~pi,三四象限的角度为0~-pi。 若一个角度从0变到2pi,但实际得到的结果是0~pi,再由-pi~0,在w=pi处发生跳变,跳变幅度为2pi,这就叫相位的卷绕。 unwrap(w)就是解卷绕,使相位在pi处不发生跳变,从而反应出真实的相位变化 " 查看 unwrap 的帮助文档可以发现 unwrap 还可以输入一个参数 tol,默认tol = pi。也可以根据情况修改下 tol。
以下纯属个人见解,若有错误,谢谢指正:
unwrap也就是如果前后两个数据之差大于默认值(一般为π,也可自己在调用函数时设定),那么就把第二个值加上或者减去2π,反正最终结果是它俩之差小于默认值即可。【特别注意】这个函数并不是把[-π,π]范围的数据变成[0,2π]的数据,感觉有点类似于让数据具有一定的单调性。
看看matlab里面的实例:
w = [0:.2:3,3.5:1:10];
p = [ 0
-1.5728
-1.5747
-1.5772
-1.5790
-1.5816
-1.5852
-1.5877
-1.5922
-1.5976
-1.6044
-1.6129
-1.6269
-1.6512
-1.6998
-1.8621
1.7252
1.6124
1.5930
1.5916
1.5708
1.5708
1.5708 ];
semilogx(w,p,'b*-'), hold
当我进行unwrap以后:
可以对比这两张图,第一张明显有跳变,而第二张就比较平滑,类似于单调性比较好。
此外unwrap的调用方法有三种,可以自己设置跳变的阈值,默认是π。
本文同步分享在 博客“风翼冰舟”(CSDN)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。