本示例说明如何测量信号相似度。将回答以下问题:如何比较具有不同长度或不同采样率的信号?如何确定测量中是否存在信号或仅有噪声?有两个信号相关吗?如何测量两个信号之间的延迟?
比较具有不同采样率的信号
考虑一个音频信号数据库和一个模式匹配应用程序,您需要在其中识别正在播放的歌曲。数据通常以低采样率存储,以占用更少的内存。
figure ax(1) = subplot(3,1,1); plot((0:numel(T1)-1)/Fs1,T1,'k') ylabel('Template 1')
第一个和第二个子图显示了来自数据库的模板信号。第三个子图显示了我们要在数据库中搜索的信号。仅查看时间序列,信号似乎与两个模板都不匹配。仔细检查发现,信号实际上具有不同的长度和采样率。
[Fs1 Fs2 Fs] ans = 1×3 4096 4096 8192
不同的长度使您无法计算两个信号之间的差异,但是可以通过提取信号的公共部分来轻松解决。此外,并不总是必须使长度相等。
在测量中寻找信号
现在,我们可以使用xcorr函数将信号S与模板T1和T2互相关,以确定是否存在匹配项。
figure ax(1) = subplot(2,1,1); plot(lag1/Fs,C1,'k') ylabel('Amplitude') grid on