Matlab 去除相同频率的信号

Matlab 去除相同频率的信号,matlab,audio,signal-processing,Matlab,Audio,Signal Processing,我正在处理一个真实的音频数据,它由三个相同频率的不同信号组成。这三个信号由7个蜂鸣音组成,其长度和能量级别不同。(对于每个信号,每次嘟嘟声之间的延迟是不同的) 信号1: 信号2: 信号3 我的目标是使用相应的匹配滤波器过滤掉所有这些信号。但问题是信号1的强度太高,我无法对数据应用其他信号匹配滤波器(因为信号1会掩盖其他匹配滤波器的滤波结果) 我试着把这个过程循环起来。每次循环后,将从数据中减去滤波后的信号。但在许多情况下,一个信号的嘟嘟声将与其他信号的嘟嘟声对齐(如第二张图所示:信号2的最

我正在处理一个真实的音频数据,它由三个相同频率的不同信号组成。这三个信号由7个蜂鸣音组成,其长度和能量级别不同。(对于每个信号,每次嘟嘟声之间的延迟是不同的)

信号1:

信号2:

信号3

我的目标是使用相应的匹配滤波器过滤掉所有这些信号。但问题是信号1的强度太高,我无法对数据应用其他信号匹配滤波器(因为信号1会掩盖其他匹配滤波器的滤波结果)

我试着把这个过程循环起来。每次循环后,将从数据中减去滤波后的信号。但在许多情况下,一个信号的嘟嘟声将与其他信号的嘟嘟声对齐(如第二张图所示:信号2的最后一声嘟嘟声被另一个信号的更强嘟嘟声掩盖)

我的问题是:

  • 我怎样才能正确地减去较强的信号而不影响较弱的信号
  • 经过匹配滤波后,只得到信号的能量和匹配位置。有没有办法通过这种能量来确定蜂鸣声的峰值
  • 编辑: 这是我提取最强信号的代码:

      t_matched = 165428; %matching position
      ct3133 = signal_generator(ones(250,1), fs/25, 380, 640, 460, 640, 400, 640); %generate the "signal 1"
      n = length(ct3133);
      signal_size = length(A222203_30s_d);
      t_begin = t_matched - 3.16*fs/25 -125-5; %position where the signal 1 begin to transmitted
      % 3.16(s) = (380 + 640 + 460 + 640 + 400 + 640)(ms)
      % 25: decimation factor
      % 125: the length of 1 beep (10ms)
      % 5: correction coeffecient due to the dealy between each beep is not ideal.
    
      %Extracting the signal 1
      signal = cat(1, zeros(t_begin, 1), abs(ct3133), zeros(signal_size - t_begin - n, 1));
      ct3133_sup = abs(ones(length(signal),1)-signal);
      ct3133_extracted = A222203_30s_d.*ct3133_sup;
    
    通过这种方法,我能够从输入数据中删除信号1。但是,这也消除了信号2的最后一声嘟嘟声,该声被信号1的第五声嘟嘟声掩盖

    信号2的最后一声嘟嘟声消失后,相应的匹配滤波器可以检测到信号2,但匹配位置不正确。因此,不能执行去除信号2的未来操作

    编辑2: 以下是提取信号1操作后的一些图形和数据

    信号1峰值和位置值:

  • 0.0413和125804
  • 0.0411和130555
  • 0.0410和138555
  • 0.0415和144305
  • 0.0417和152305
  • 0.0413和157306
  • 0.0415和165306
  • 信号1的匹配滤波结果(X:匹配位置,Y:信号1能量):

    X=165427,Y=21.32。

    移除信号1后的输入数据:

    很明显,信号2只包含6次蜂鸣音,而假定为7次

    信号2峰值和位置分别为:

  • 峰值1:0.00102和110460
  • 峰值2:0.001114和115211
  • 峰值3:0.001097和123211
  • 峰值4:0.001141和128961
  • 峰值5:0.001139和136711
  • 峰值6:0.001119和145462
  • 用信号2的匹配滤波器对上述数据进行滤波后的结果:

    峰值和位置为:0.3615和152383


    *位置是采样点,数据采样率:12500Hz

    是否先提取较强的信号,然后从输入信号中删除,然后提取较低的信号?请注意,a假设(或在存在)加性随机噪声的情况下是最优的,这里不是这种情况。我使用匹配滤波器来检测信号位置和能量。并根据这些发现提取信号。我的问题是我不能正确地提取更强的信号如果你知道匹配的位置和匹配的滤波器,你也知道哔哔声的位置。您可以尝试将这些位置的信号设置为零。在许多情况下,较强信号的嘟嘟声掩盖较弱信号。这种情况的解决方案是什么?您可以尝试两种方法:在第一次航向匹配后,(1)从匹配的滤波器中删除缺失的蜂鸣声,并尝试再次定位信号,或(2)根据检测到的最大不同蜂鸣声来纠正航向估计。这是一种先提取更强信号的解决方案吗,将其从输入信号中移除,然后提取较低的信号?请注意,a假设(或在存在)加性随机噪声的情况下是最优的,这里不是这种情况。我使用匹配滤波器来检测信号位置和能量。并根据这些发现提取信号。我的问题是我不能正确地提取更强的信号如果你知道匹配的位置和匹配的滤波器,你也知道哔哔声的位置。您可以尝试将这些位置的信号设置为零。在许多情况下,较强信号的嘟嘟声掩盖较弱信号。这种情况的解决方案是什么?您可以尝试两种方法:在第一次航向匹配后,(1)从匹配的滤波器中删除丢失的蜂鸣音,并尝试再次定位信号,或(2)根据检测到的最大不同蜂鸣音来纠正航向估计。