Matlab 去除相同频率的信号
我正在处理一个真实的音频数据,它由三个相同频率的不同信号组成。这三个信号由7个蜂鸣音组成,其长度和能量级别不同。(对于每个信号,每次嘟嘟声之间的延迟是不同的) 信号1: 信号2: 信号3 我的目标是使用相应的匹配滤波器过滤掉所有这些信号。但问题是信号1的强度太高,我无法对数据应用其他信号匹配滤波器(因为信号1会掩盖其他匹配滤波器的滤波结果) 我试着把这个过程循环起来。每次循环后,将从数据中减去滤波后的信号。但在许多情况下,一个信号的嘟嘟声将与其他信号的嘟嘟声对齐(如第二张图所示:信号2的最后一声嘟嘟声被另一个信号的更强嘟嘟声掩盖) 我的问题是:Matlab 去除相同频率的信号,matlab,audio,signal-processing,Matlab,Audio,Signal Processing,我正在处理一个真实的音频数据,它由三个相同频率的不同信号组成。这三个信号由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峰值和位置值:
*位置是采样点,数据采样率:12500Hz是否先提取较强的信号,然后从输入信号中删除,然后提取较低的信号?请注意,a假设(或在存在)加性随机噪声的情况下是最优的,这里不是这种情况。我使用匹配滤波器来检测信号位置和能量。并根据这些发现提取信号。我的问题是我不能正确地提取更强的信号如果你知道匹配的位置和匹配的滤波器,你也知道哔哔声的位置。您可以尝试将这些位置的信号设置为零。在许多情况下,较强信号的嘟嘟声掩盖较弱信号。这种情况的解决方案是什么?您可以尝试两种方法:在第一次航向匹配后,(1)从匹配的滤波器中删除缺失的蜂鸣声,并尝试再次定位信号,或(2)根据检测到的最大不同蜂鸣声来纠正航向估计。这是一种先提取更强信号的解决方案吗,将其从输入信号中移除,然后提取较低的信号?请注意,a假设(或在存在)加性随机噪声的情况下是最优的,这里不是这种情况。我使用匹配滤波器来检测信号位置和能量。并根据这些发现提取信号。我的问题是我不能正确地提取更强的信号如果你知道匹配的位置和匹配的滤波器,你也知道哔哔声的位置。您可以尝试将这些位置的信号设置为零。在许多情况下,较强信号的嘟嘟声掩盖较弱信号。这种情况的解决方案是什么?您可以尝试两种方法:在第一次航向匹配后,(1)从匹配的滤波器中删除丢失的蜂鸣音,并尝试再次定位信号,或(2)根据检测到的最大不同蜂鸣音来纠正航向估计。