matlab中phase与angle的区别
发布网友
发布时间:2022-04-23 09:36
我来回答
共3个回答
热心网友
时间:2023-06-24 01:13
phase
和 angle 在输入为单个标量数据时,没有差别,二者都是用 atan2
函数来求输入数据的四象限辐角。但是对于向量或矩阵数据输入时,二者差别非常大。
1.
phase 只支持标量和一维(行、列)向量输入,不支持二维或高维矩阵输入。angle 可以支持标量或任意维数矩阵输入
2.
对于向量输入,phase 会对输出结果做判断,如果相邻两个输出角度的差的绝对值超过 3.5,phase
会对其重新处理,确保相邻两个角度差值的绝对值永远不超过3.5。而 angle
函数对每个数据独立求其辐角,不会因为相邻角度差超出某个数值而做特殊处理。所以,从这个意义上讲,angle 函数是我们通常需要使用的求角度的函数,而 phase
的特殊处理,会导致得出与angle不同的结果。
下面举例说明。
Example
1: 1维向量
g
= [-1-1i -1+1i];
% 对应角度为 -3*pi/4 (=-2.3562) 和 3*pi/4 (=-2.3562)
ang
= angle(g)
pha
= phase(g)
复制代码
输出结果是:
ang
=
-2.3562 2.3562
pha
=
-2.3562 -3.9270
很显然,由于
2.3562与-2.3562的差值的绝对值超过了3.5,phase函数的处理使得得到的结果并非我们想要的,而angle函数是直接对每个输入数据求角度,不会考虑相邻两个角度的差值大小。所以,angle
求得的是我们需要的
Example
2:2维矩阵
g
= [-1-1i -1+1i; -1-1i -1+1i];
ang
= angle(g)
pha
= phase(g)
复制代码
输出结果是:
ang
=
-2.3562 2.3562
-2.3562 2.3562
Error
using phase (line 17)
PHASE
applies only to row or column vectors.
For
matrices you have to decide along which dimension the
phase
should be continuous.
从这个例子可以看出,对于矩阵输入,只有angle函数能正常工作,phase函数无法支持矩阵输入。
综上所述,如果我们对输出角度的差值没有*,而只是单纯的求输入数据的辐角,我们应该用
angle 函数。所以,对于楼主的代码,最好将 phase 换成 angle 函数。
热心网友
时间:2023-06-24 01:13
请不要误导大众!http://www.ilovematlab.cn/thread-259049-1-1.html
热心网友
时间:2023-06-24 01:14
phase是相位,angle 是角度 区别