永发信息网

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

答案:5  悬赏:40  手机版
解决时间 2021-01-04 11:19
phase函数和angle函数有什么区别
最佳答案
phase 和 angle 在输入为单个标量数据时,bai没有差别,二者都是用 atan2 函数来求输入数据的四象限辐角。但是对于向量du或矩阵数据输入时,二者差别非常大。

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

2. 对于向量输入,phase 会对输出结果做判断,如果相邻两个输出角度的差的绝对值超过 3.5,phase 会对其重新处理,确保dao相邻两个角度差版值的绝对值永远不超过3.5。而权 angle 函数对每个数据独立求其辐角,不会因为相邻角度差超出某个数值而做特殊处理。所以,从这个意义上讲,angle 函数是我们通常需要使用的求角度的函数,而 phase 的特殊处理,会导致得出与angle不同的结果。
全部回答
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
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
一、区别: 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 函数。
这是在MATLAB论坛看到的答案: phase 和 angle 在输入为单个标量数据时,没有差别,二者都是用bai atan2 函数来求输入数据的四象限辐角。但是对于向量或矩阵数据输入时,二者差别非常大。 1. phase 只支持标量和一维(行、列)向量输入,不du支持二维或高维矩阵输入。angle 可以支持标量或任意维数矩阵输入 2. 对于向量输入,phase 会对输出结果做判断,如果相邻zhi两个输出角度的差的绝对值超过 函数中定义的数值,phase 会对其重新处理,确保相邻两个角度差值的绝对值永远不dao超过函数中定义的数值。而专属 angle 函数对每个数据独立求其辐角,不会因为相邻角度差超出某个数值而做特殊处理。所以,从这个意义上讲,angle 函数是我们通常需要使用的求角度的函数,而 phase 的特殊处理,会导致得出与angle不同的结果。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
火羽峰怎么上去
粮库内的环境应该是A.干燥、高温和空气流通的
对话这首歌中英文部分的歌词
填一填.70+70+70+70=________×________=___
下列没有错别字的一项是A. 舍本逐末挑拨事非
一个正方形的体积为27立方厘米,现将它分割成
跨省寄东西哪个快递最便宜,不说快慢
广东人不能说那些数字?拜托了各位 谢谢
装修费 用英语怎么说
单选题下面哪个事例不能用来说明光在同一种均
买理财产品怎么算收益
单选题1920~1929年,美国工人的工资增长2%
第二节 完形填空(共20小题;每小题1.5分,满
有水平者得高薪 打一字
单选题关于黑子的说法,正确的是A.黑子是太阳
推荐资讯
big big world 音标
农行电子承兑汇票如何接收
关于力的合成和分解,下列说法正确的是A.一个
观察下列各图中小球的摆放规律,若第n个图中
五年级基础训练下
图a是两种元素在元素周期表中的信息,图b是氟
若指数函数f(x)=ax(a>0且a≠1)的部分对
某小区规划在一个长10m,宽8m的矩形场地ABCD
有一首歌里i you w什么的是英文歌女人唱的dj
读“东南亚政区及相关气候资料图”,完成下列
如果(1+x2)n+(1+x)2n(n∈N*)的展开式中
铜仁平安汽车检测服务有限公司地址在什么地方
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?