减去它们之间具有互感的传感器输出

信息处理 声音的
2022-01-14 08:38:05

背景:我用来分析信号的软件是matlab。我有两个使用两个磁传感器记录的音频信号。让我们称一个传感器为 A,另一个为 B。A 和 B 之间有互感。

当传感器 A 和 B 工作时,我想减去由于传感器 B 的互感而在传感器 A 中接收到的信息。

我试图通过简单地用matlab(AB)编写从信号A中减去信号B,但它给了我一个奇怪的答案。我认为它源于我在相位上的转变。两个音轨的开始录音时间是一样的,所以我认为这不是时间延迟。

我想知道如何在理论上做这个减法过程,如果有人有任何提示如何在matlab中轻松实现它,我想知道。

我将非常感谢任何帮助。

提前致谢。

下面我附上了信号图的图片。在第一张图片中,您可以看到从传感器 A 和传感器 B 接收到的信号。在第二张图片中,我将传感器 A 绘制为红色,传感器 B 绘制为蓝色,范围为 2.12:2.16,并放大了更多。

在此处输入图像描述

在此处输入图像描述

2个回答

这听起来像是盲源分离一般来说,你不能在它们混合后解开它们。如果您有两个来源的两个不同录音,每个录音中都有一些来源,您有时可以使用独立成分分析将它们分开。

在这里有一个 Python 示例还有用于 MATLAB 的 FastICA如果它们是音频信号,被磁性拾取,它们之间可能没有明显的延迟。ICA 在这种情况下运行良好。

这看起来像是一个直截了当的串扰问题。您不能简单地直接减去信号,因为每个频率的磁耦合都不同(就幅度和相位而言)。

假设您有两个音频信号 xa(t) 和 xb(t) 以及两个传感器信号 ya(t) 和 yb(t)。由于传感器之间存在耦合,您将得到串扰,我们可以在频域中写入

Ya(w) = Haa(w)*xa(w) + Hba(w)*xb(w)
Yb(w) = Hab(w)*xa(w) + Hbb(w)*xb(w)

其中 Hxy(w) 是从信号“x”到传感器信号“y”的传递函数。4 个传递函数形成一个 2x2 矩阵,为了完全恢复原始信号,您需要反转矩阵并将反转矩阵传递函数应用于接收到的传感器信号。

由于您的串扰很小,您可以直接测量传递函数 Hba(w) 并将其减去如下:当信号 B 为 0 时,测量从信号 A 到传感器 B 的传递函数。从该传递函数创建一个滤波器 ( FIR 或 IIR,取决于它的形状)。现在,您可以从传感器信号 B 中测量并减去传感器信号 A 的滤波版本:

yb(t)' = yb(t)-hab(t)**ya(t)

其中 hab(t) 是串扰滤波器的脉冲响应,** 是卷积算子。

串扰滤波器将幅度和相移表示为特定传感器耦合频率的函数,它确保减去正确的信号。