【问题标题】:How to get phase angle from FFT for an amplitude modulated signal如何从 FFT 获得幅度调制信号的相位角
【发布时间】:2013-06-12 12:57:16
【问题描述】:

我有幅度调制信号的测量值。我用 fft() matlab 函数进行了分析。在我用“书”计算一切之后,我只有一个问题。调制信号的相位不正确。只有当我从计算的相位中减去 pi/2 时,我才能得到正确的值。调制后的信号是第六个分量:

X[6]= -8.2257e+001 -1.6158e+002i
相位(x[6])=atan(-8.2257e+001/-1.6158e+002)= 1.0999

真正的相位是:pahse(x[6])-pi/2 = -0.4709

为什么我必须减去pi/2?

如果我使用atan2(imag(X(6)),real(X(6))) - 第一张图片

如果我使用atan(imag(X(6))/real(X(6)))-pi/2 - 第二张图片

【问题讨论】:

  • 您使用的是atan 还是atan2?您的代码使用atan,但您已标记atan2
  • 对不起,我的错误,没有 atan 标签,但我使用的是 atan() fnc。
  • 然后使用atan2。问题解决了。
  • 就像@Rody Oldenhuis 建议的那样,但是那个下界工作atan2(imagX,realX)=-2.04 但是相位是-0.4709,正如我上面提到的。
  • 你确定测量没有假设你使用正弦的余弦,反之亦然,还是什么?根据这些数字,测量的阶段是不正确的......

标签: matlab fft phase


【解决方案1】:

您正在经历象限模糊。 atan() 的范围是 [-pi/2 ... +pi/2],超出该范围时会重复。这意味着,当该角度恰好位于圆的“另一侧”时,您无法唯一确定角度的正确象限。

为避免此类事情,请使用angle(或phase)和/或atan2atan 的四象限版本):

>> X = -8.2257e+001 - 1.6158e+002i;
>> angle(X)
ans =
   -2.041680802478084e+000
>> atan2(imag(X), real(X))
ans =
   -2.041680802478084e+000

【讨论】:

  • second ans =-2.0... 但如果我使用此代码运行,我的相位差会更大。我确定结果应该是 -0.4709
  • @Elod:看看你的值——在x方向(实轴)负80,在y方向(虚轴)负160,这个角度大致为45 度超过负 90 度,因此,大约为负 135 度(-2.3 弧度)。所以你的 -0.4 弧度没有任何意义......
  • 我完全理解并同意你的观点,但是如果我使用该相移,结果是我的帖子中附加的第一张图片。
猜你喜欢
  • 1970-01-01
  • 2011-09-06
  • 2019-06-24
  • 1970-01-01
  • 2023-03-24
  • 1970-01-01
  • 2011-12-07
  • 2015-11-09
  • 2011-08-15
相关资源
最近更新 更多