我在一个相距 8 毫米的阵列中使用多个数字 MEMS 麦克风。现在我记录了一个 20kHz 的正弦波进行校准(角度为 0°),并想测量所有麦克风之间随时间推移的相位差。采样频率为 48 kHz。
我的方法是执行希尔伯特变换(因为记录的信号是真实的)并获取复杂样本的角度。
有没有更好的方法来做到这一点?我想知道相位差是否
- 保持不变
- 相当小
谢谢!
我在一个相距 8 毫米的阵列中使用多个数字 MEMS 麦克风。现在我记录了一个 20kHz 的正弦波进行校准(角度为 0°),并想测量所有麦克风之间随时间推移的相位差。采样频率为 48 kHz。
我的方法是执行希尔伯特变换(因为记录的信号是真实的)并获取复杂样本的角度。
有没有更好的方法来做到这一点?我想知道相位差是否
谢谢!
希尔伯特变换的想法肯定会奏效,但可能过于复杂。FFT 还将为每个 bin 提供相位和幅度信息,并且可以比较音调所在的主要 bin 的相位以确定每个 bin 的相对相位,假设数据捕获是同步的。
在这种相位相当小的情况下,另一种简单的方法是将每个波形与参考音调偏移相乘四分之一周期(90°)并进行滤波。由于相位结果对幅度和实际相位都敏感,因此应在获取产品之前将应同步捕获的波形调平到相同的幅度。给定两个正弦波,乘积的平均值与两个正弦波之间相位差的余弦成正比,通过将两者之一延迟 90 度,结果将与正弦成正比,对于小角度当角度以弧度给出时。例如,一个 10 度的角,即 0.1745 弧度,其结果为错误很可能低于结果的噪音。
这可以从两个正弦曲线乘积的三角关系中看出:
我们看到乘积是两个频率和相位偏移的和和差。当频率相同时,我们会得到两倍频率的音调(我们在平均值或低通滤波器中滤除)和与角度的余弦成正比的 DC 音调。
基于此以及在获取产品之前需要对每个音调进行调平(以消除幅度敏感性),最好的方法是硬限制每个接收到的音调,确保在每个生成的正方形中正确设置阈值以实现 50% 的占空比海浪。该产品的低频结果(这是一个简单的 XOR 函数,被平均)将具有线性结果与相位,在度相位范围内提供明确的线性输出与相位。同样,参考音应延迟 90° 以使结果居中在可用范围内。
乘积和平均解决方案的优势在于将估计中的噪声降至最低,与任何方法(例如仅比较一个过零)相比,重要的是参考波形与测试波形同步,以消除两者之间不可避免的漂移误差。