获得矢量之间相位差的好方法?

时间:2015-09-30 12:41:13

标签: matlab

所以我有两个向量:

>> [phase exp_phase]

ans =

    0.2266         0
   -0.0702         0
   -0.0070         0
   -0.0854         0
    0.0888         0
    3.1403   -3.1416
   -2.9571   -3.1416
   -0.1441         0
   -0.2660         0
    2.8749   -3.1416
    0.0126         0
   -2.9309   -3.1416
    0.0064         0

相通过atan2(b,a)获得。我想弄清楚相位差异。问题是我显然希望-3.00和+3.00之间的差异大致为0.28,但同时我希望-2.72和+3.00之间的差异相同。

这可能是微不足道的,但我无法找到一个好办法:(

2 个答案:

答案 0 :(得分:0)

假设您有两个角度,w1 = + 3和w2 = -3(均以弧度表示)。 要找到最小的角度差异,请执行以下操作:

atan2(sin(w1-w2),cos(w1-w2))

ans =

   -0.2832

答案 1 :(得分:0)

如果要找到带有arctan的相位,那么我假设您已经在直角坐标系中有两个向量,并且使用atan2来获取极坐标的相位值。只需直接在笛卡尔坐标中找到相位差即可。我可能搞砸了这个公式(我的触发器很生锈,所以用谷歌搜索它),但这有点像acos((a。b)/ | a || b |)。如果这是正确的公式,它将给出两个矢量的相位差,无论如何在笛卡尔坐标系中都有用于计算的“ a”公式。您也许可以避免两次atan2函数(除非您还需要知道实际的阶段)。