两个正弦信号之间的相位差

信息处理 matlab fft 阶段 功率谱密度
2022-01-28 20:55:26

目前,我有两个信号,两个信号的主要成分都是 60Hz,但都在 180Hz 处响应较弱 + 少量噪声。如下图所示,我想找出第一个信号的 60Hz 分量和第二个信号的 180Hz 分量之间的相位差。

如图第二个波形所示,180Hz信号的相位滞后为1.39ms,对应90度相移。

在此处输入图像描述

我想知道,如果我想实现这个相位测量,我可以简单地取两个信号的 fft,然后找到信号 1 的 60Hz 的相位,然后减去信号 2 的 180Hz 的相位吗?

或者如果有更好的方法来做到这一点?

1个回答

你可以找到两个正弦之间的相位,如果你把它写成一个复信号,其中第一个正弦是实部,第二个是虚部。但要做到这一点,有必要重新调整一个分量以适应另一个分量的幅度变化。或者另一种方法是将两个正弦的幅度值归一化。有一些解释:

我们有信号s1(t)s2(t),假设为正弦波。在测量它们的相位差之前,我们必须对那里的信号进行归一化。标准化过程是:

sinorm(t)=si(t)1.414E[si]

在哪里E[s]是模块的平均值s(t). 为了实时执行标准化,有必要跟踪E[s]不断地因为信号s(t)可以是非平稳的。循环移动平均滤波器是这样的:

simean(k)=asi(k)+(1a)simean(k1)

在哪里a是积分时间的倒数(或等效滤波器的长度K)a=1Kk离散时间表示中的样本索引。

一旦我们对两个信号进行归一化,就可以将它们之间的相移估计为

s(t)=s1norm(t)+js2norm(t)

ϕ(t)=arg(s(t))

ϕ(t)=tan1(s(t)s(t))

如果是实时实现,好的做法是使用 CORDIC 来计算相位而不是atan功能。