永发信息网

phase函数和angle函数有什么区别

答案:5  悬赏:40  手机版
解决时间 2021-01-04 11:19
  • 提问者网友:容嬷嬷拿针来
  • 2021-01-03 15:17
phase函数和angle函数有什么区别
最佳答案
  • 五星知识达人网友:有你哪都是故乡
  • 2021-01-10 00:14
phase 和 angle 在输入为单个标量数据时,bai没有差别,二者都是用 atan2 函数来求输入数据的四象限辐角。但是对于向量du或矩阵数据输入时,二者差别非常大。

1. phase 只支持标量和一维(行、列)向量输入,不支持二维或高维矩阵输入。angle 可以支持标量或zhi任意维数矩阵输入

2. 对于向量输入,phase 会对输出结果做判断,如果相邻两个输出角度的差的绝对值超过 3.5,phase 会对其重新处理,确保dao相邻两个角度差版值的绝对值永远不超过3.5。而权 angle 函数对每个数据独立求其辐角,不会因为相邻角度差超出某个数值而做特殊处理。所以,从这个意义上讲,angle 函数是我们通常需要使用的求角度的函数,而 phase 的特殊处理,会导致得出与angle不同的结果。
全部回答
  • 1楼网友:低音帝王
  • 2021-01-10 04:21
phase 和 angle 在输入为单个标量数据时,没有差别,二者都是用 atan2 函数来求输入数据的四象限辐角。但是对于向量或矩阵数据输入时,二者差别非常大。 1. phase 只支持标量和一维(行、列)向量输入,不支持二维或高维32313133353236313431303231363533e4b893e5b19e31333361316562矩阵输入。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 函数。 最后,建议楼主用 edit angle 和 edit phase 分别打开angle和phase两个函数,看看其内部具体实现,二者的差别就一目了然了。下面给出 angle 和 phase 函数的内部源代码,楼主可以自行比较: % angle.m function p = angle(h) %ANGLE Phase angle. % ANGLE(H) returns the phase angles, in radians, of a matrix with % complex elements. % % Class support for input X: % float: double, single % % See also ABS, UNWRAP. % Copyright 1984-2010 The MathWorks, Inc. % $Revision: 5.7.4.2 $ $Date: 2010/04/21 21:31:19 $ p = atan2(imag(h), real(h)); 复制代码 % phase.m function PHI=phase(G) %PHASE Computes the phase of a complex vector % % PHI=phase(G) % % G is a complex-valued row vector and PHI is returned as its % phase (in radians), with an effort made to keep it continuous % over the pi-borders. % L. Ljung 10-2-86 % Copyright 1986-2004 The MathWorks, Inc. % $Revision: 1.5.4.2 $ $Date: 2004/07/31 23:24:49 $ %PHI = unwrap(angle(G)); [nr,nc] = size(G); if min(nr,nc) > 1 error(sprintf(['PHASE applies only to row or column vectors.'... '\nFor matrices you have to decide along which dimension the'... '\nphase should be continuous.'])) end if nr>nc G = G.'; end PHI=atan2(imag(G),real(G)); N=length(PHI); DF=PHI(1:N-1)-PHI(2:N); I=find(abs(DF)>3.5); for i=I if i~=0, PHI=PHI+2*pi*sign(DF(i))*[zeros(1,i) ones(1,N-i)]; end end if nr>nc PHI = PHI.'; end
  • 2楼网友:怀裏藏嬌
  • 2021-01-10 02:56
hase 和 angle 在输入e69da5e887aa3231313335323631343130323136353331333361326233为单个标量数据时,没有差别,二者都是用 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 函数。 最后,建议楼主用 edit angle 和 edit phase 分别打开angle和phase两个函数,看看其内部具体实现,二者的差别就一目了然了。下面给出 angle 和 phase 函数的内部源代码,楼主可以自行比较: % angle.m function p = angle(h) %ANGLE Phase angle. % ANGLE(H) returns the phase angles, in radians, of a matrix with % complex elements. % % Class support for input X: % float: double, single % % See also ABS, UNWRAP. % Copyright 1984-2010 The MathWorks, Inc. % $Revision: 5.7.4.2 $ $Date: 2010/04/21 21:31:19 $ p = atan2(imag(h), real(h)); 复制代码 % phase.m function PHI=phase(G) %PHASE Computes the phase of a complex vector % % PHI=phase(G) % % G is a complex-valued row vector and PHI is returned as its % phase (in radians), with an effort made to keep it continuous % over the pi-borders. % L. Ljung 10-2-86 % Copyright 1986-2004 The MathWorks, Inc. % $Revision: 1.5.4.2 $ $Date: 2004/07/31 23:24:49 $ %PHI = unwrap(angle(G)); [nr,nc] = size(G); if min(nr,nc) > 1 error(sprintf(['PHASE applies only to row or column vectors.'... '\nFor matrices you have to decide along which dimension the'... '\nphase should be continuous.'])) end if nr>nc G = G.'; end PHI=atan2(imag(G),real(G)); N=length(PHI); DF=PHI(1:N-1)-PHI(2:N); I=find(abs(DF)>3.5); for i=I if i~=0, PHI=PHI+2*pi*sign(DF(i))*[zeros(1,i) ones(1,N-i)]; end end if nr>nc PHI = PHI.'; end 复制代码 http://www.ilovematlab.cn/thread-259049-1-1.html
  • 3楼网友:轮獄道
  • 2021-01-10 02:24
一、区别: phase 和 angle 在输入为单个标量数据时,没有差别,二者都是用 atan2 函数来求输入数据的四象限辐角。但是对于向量或矩阵数据输入时,二者差别非常大: 1、 phase 只支持标量和一维(行、列)向量输入,不支持二维或高维矩阵输入。angle 可以支持标量或任意维数矩阵输入。 2、对于向量输入,phase 会对输出结果做判断,如果相邻两个输出角度的差的绝对值超过 3.5,phase 会对其重新处理,确保相邻两个角度差值的绝对值永远不超过3.5。而 angle 函数对每个数据独32313133353236313431303231363533e78988e69d8331333361316634立求其辐角,不会因为相邻角度差超出某个数值而做特殊处理。所以,从这个意义上讲,angle 函数是我们通常需要使用的求角度的函数,而 phase 的特殊处理,会导致得出与angle不同的结果。 二、下面举例说明。 1、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 求得的是我们需要的。 2、Example 2:2维矩阵 g = [-1-1i孩虎粉臼莠铰疯歇弗忙 -1+1i; -1-1i -1+1i]; ang = angle(g) pha = phase(g) 复制代码 输出结果是: ang =-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 函数。
  • 4楼网友:第四晚心情
  • 2021-01-10 01:14
这是在MATLAB论坛看到的答案: phase 和 angle 在输入为单个标量数据时,没有差别,二者都是用bai atan2 函数来求输入数据的四象限辐角。但是对于向量或矩阵数据输入时,二者差别非常大。 1. phase 只支持标量和一维(行、列)向量输入,不du支持二维或高维矩阵输入。angle 可以支持标量或任意维数矩阵输入 2. 对于向量输入,phase 会对输出结果做判断,如果相邻zhi两个输出角度的差的绝对值超过 函数中定义的数值,phase 会对其重新处理,确保相邻两个角度差值的绝对值永远不dao超过函数中定义的数值。而专属 angle 函数对每个数据独立求其辐角,不会因为相邻角度差超出某个数值而做特殊处理。所以,从这个意义上讲,angle 函数是我们通常需要使用的求角度的函数,而 phase 的特殊处理,会导致得出与angle不同的结果。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯