我对信号处理很陌生,对匹配滤波器有点困惑。假设我有一个时间序列和一个需要在其中识别的特定波形。根据定义:
通过将已知信号或模板与未知信号相关联来获得匹配滤波器,以检测未知信号中模板的存在。
所以我从序列中取出窗口,以相同的采样率生成测试信号,对它们进行互相关,找到最大值和阈值。是否将我测量的时间序列与生成的波形交叉关联为匹配滤波器(例如,在 matlab 中使用 xcorr),或者我必须遵循特定程序来生成“更正确”的匹配滤波器。谢谢你。
我对信号处理很陌生,对匹配滤波器有点困惑。假设我有一个时间序列和一个需要在其中识别的特定波形。根据定义:
通过将已知信号或模板与未知信号相关联来获得匹配滤波器,以检测未知信号中模板的存在。
所以我从序列中取出窗口,以相同的采样率生成测试信号,对它们进行互相关,找到最大值和阈值。是否将我测量的时间序列与生成的波形交叉关联为匹配滤波器(例如,在 matlab 中使用 xcorr),或者我必须遵循特定程序来生成“更正确”的匹配滤波器。谢谢你。
我将举例说明:在 Matlab 中检测噪声中的矩形脉冲。
让我们从定义包含脉冲的信号开始。
fs = 1/1000;
t = 0:fs:1;
s = [zeros(1,400), ones(1,100), zeros(1,501)];
首先让我们用小功率检测噪声。我们计算接收到的(噪声)信号:
np = 0.1; % noise power (variance)
n = sqrt(np)*randn(1,1001); % noise signal
r = s + n; % received signal
plot(t,r); title('Received signal, small noise power');
现在让我们运行相关性:
c = xcorr(r,s);
plot(c); title('Correlation, small noise power');
您可以看到相关性如何产生大输出,表明脉冲在那里。令人惊奇的是,即使无法看到,相关器也能找到脉搏。让我们增加噪声功率并重复该过程。
np = 4;
n = sqrt(np)*randn(1,1001);
r1 = s + n; % received signal with large noise
如您所见,相关器具有令人难以置信的检测嵌入在强噪声中的信号的能力。
您可以为自己做的一件事是在不存在脉冲时运行相关性。该信号很难与上面显示的嘈杂脉冲区分开来,但您会看到相关性不会产生明显的最大值。
因此,实现非常简单;不太容易做到的是: