文档

测量信号相似性

此示例显示如何测量信号相似性。它将帮助您回答以下问题:如何比较具有不同长度或不同采样率的信号?如何确定测量中是否存在信号或噪声?两个信号是否相关?如何测量两个信号之间的延迟(以及如何对齐它们)?如何比较两个信号的频率内容?在信号的不同部分也可以找到相似性,以确定信号是否是周期性的。

比较不同采样率的信号

考虑一个音频信号数据库和一个模式匹配应用程序,在那里你需要识别一首歌曲,它通常以低采样率存储,以占用较少的内存。

%加载数据负载相关信号图ax(1)=子地块(3,1,1);地块(0:numel(T1)-1)/Fs1,T1,“k”)伊拉贝尔(“模板1”)网格ax(2)=子地块(3,1,2);地块(0:numel(T2)-1)/Fs2,T2,“r”)伊拉贝尔(“模板2”)网格ax(3)=子地块(3,1,3);地块(0:numel(S)-1)/Fs,S)ylabel(“信号”)网格xlabel(‘时间(秒)’)连接轴(ax(1:3),“x”)轴([01.61-44])

第一个子图和第二个子图显示来自数据库的模板信号。第三个子图显示我们要在数据库中搜索的信号。仅通过查看时间序列,信号似乎与两个模板中的任何一个都不匹配。更仔细的检查显示,信号实际上具有不同的长度和采样率tes。

[Fs1 Fs2 Fs]
ans=1×34096 4096 8192

不同的长度使您无法计算两个信号之间的差异,但这可以通过提取信号的公共部分轻松解决。此外,并不总是需要均衡长度。可以在不同长度的信号之间执行互相关,但必须确保它们具有相同的sa采样率。最安全的方法是以较低的采样率对信号重新采样重采样函数在重采样过程中对信号应用抗混叠(低通)FIR滤波器。

[P1,Q1]=大鼠(Fs/Fs1);%有理分式逼近[P2,Q2]=大鼠(Fs/Fs2);%有理分式逼近T1=重采样(T1,P1,Q1);%按合理因素改变抽样率T2 =重基(T2,P2,Q2);%按合理因素改变抽样率

在测量中寻找信号

我们现在可以用互相关系数函数确定是否存在匹配项。

[C1,LAG1] = XcorR(T1,S);[C2,LAG2] = XcorR(T2,S);图轴(1)=子图(2,1,1);绘图(LAG1 / FS,C1,“k”)伊拉贝尔(“振幅”)网格头衔(“模板1和信号之间的互相关”)斧头(2)=子图(2,1,2);绘图(LAG2 / FS,C2,“r”)伊拉贝尔(“振幅”)网格头衔(“模板2和信号之间的互相关”)xlabel(‘时间(秒)’)轴(ax(1:2),[-1.51.5-700])

第一子批次指示信号和模板1的相关性较小,而第二子批次中的高峰值指示信号存在于第二模板中。

[~,I]=max(abs(C2));SampleDiff=lag2(I)
SampleDiff=499
timediff = samplediff / fs
时间差=0.0609

互相关的峰值表示信号在61 ms后开始出现在模板T2中。换句话说,信号T2领先信号S 499个样本,如SampleDiff所示。此信息可用于对齐信号。

测量信号之间的延迟并将其对齐

考虑一种情况,你从不同的传感器收集数据,记录由桥两侧的汽车引起的振动。分析信号时,可能需要将其对齐。假设有3个传感器以相同的采样率工作,并且它们正在测量由相同事件引起的信号。

图,ax(1)=子地块(3,1,1);地块(s1)标签(“s1”)网格ax(2)=子地块(3,1,2);地块(s2,“k”)伊拉贝尔(“s2”)网格斧头(3)=子图(3,1,3);绘图(S3,“r”)伊拉贝尔(“s3”)网格xlabel(“样本”)连接轴(ax,“xy”)

我们也可以使用芬德利函数查找两个信号之间的延迟。

t21=finddelay(s1、s2)
t21=-350
t31=finddelay(s1、s3)
t31=150

t21表示s2比s1落后350个样本,t31表示s3比s1领先150个样本。此信息现在可以通过对信号进行时间偏移来对齐3个信号。我们还可以使用对准信号通过延迟最早的信号,直接对齐两个信号的信号。

S1 =对齐信号(S1,S3);S2 =对齐信号(S2,S3);图AX(1)=子图(3,1,1);绘图(S1)网格头衔(“s1”)轴心牢固的ax(2)=子地块(3,1,2);地块(s2)网格头衔(“s2”)轴心牢固的ax(3)=子批次(3,1,3);绘图(s3)网格头衔(“s3”)轴心牢固的连接轴(ax,“xy”)

比较信号的频率内容

功率谱显示每个频率中存在的功率。频谱相干性识别信号之间的频域相关性。相干性值趋向于0表示相应的频率分量不相关,而值趋向于1表示相应的频率分量相关。相干性值趋向于0表示相应的频率分量不相关两个信号及其各自的功率谱。

Fs=FsSig;%抽样率[P1,f1]=周期图(sig1,[],[],Fs,“权力”); [P2,f2]=周期图(sig2,[],[],Fs,“权力”)图t=(0:numel(sig1)-1)/Fs;子地块(2,2,1)图(t,sig1,“k”)伊拉贝尔(“s1”)网格头衔(“时间序列”)子地块(2,2,3)图(t,sig2)ylabel(“s2”)网格xlabel(‘时间(秒)’)子地块(2,2,2)图(f1、P1、,“k”)伊拉贝尔(“P1”)网格牢固的头衔(“功率谱”)子地块(2,2,4)图(f2,P2)ylabel(“P2”)网格牢固的xlabel(‘频率(Hz)’)

这个mscohere函数计算两个信号之间的光谱相干性。它确认sig1和sig2有两个相关分量,分别为35 Hz和165 Hz。在光谱相干性较高的频率中,相关分量之间的相对相位可通过互谱相位进行估计。

[Cxy,f]=mscohere(sig1,sig2,[],[],[],[],Fs);Pxy=cpsd(sig1,sig2,[],[],[],[],[],Fs);相位=-角度(Pxy)/pi*180;[pks,locs]=findpeaks(Cxy,“小豌豆”,0.75);图形子图(2,1,1)绘图(F,CXY)标题(“一致性估计”)网格hgca=gca;hgca.XTick=f(locs);hgca.YTick=0.75;轴([0 200 0 1])子地块(2,1,2)地块(f,阶段)标题(“交叉谱相位(deg)”)网格hgca=gca;hgca.XTick=f(locs);hgca.YTick=round(phase(locs));xlabel(‘频率(Hz)’)轴([0 200-180])

35 Hz分量之间的相位滞后接近-90度,165 Hz分量之间的相位滞后接近-60度。

寻找信号中的周期性

考虑一套办公楼在冬季的温度测量,每30分钟测量大约16.5周。

%负载温度数据负载办公用品Fs=1/(60*30);%采样率为每30分钟1个样本天数=(0:长度(温度)-1)/(Fs*60*60*24);图表(天数,温度)标题(“温度数据”)xlabel('时间(天)')伊拉贝尔(‘温度(华氏度)’)网格

在70年代的低温下,你需要去除平均值来分析信号中的小波动希科夫函数在计算互相关之前移除信号的平均值。它返回互协方差。将最大滞后限制为信号的50%,以获得对互协方差的良好估计。

maxlags=numel(temp)*0.5;[xc,lag]=xcov(temp,maxlags);[~,df]=findpeaks(xc,“MinPeakDistance”,5*2*24); [~,mf]=findpeaks(xc);图表(滞后/(2*24),xc,“k”,...滞后(df)/(2*24),xc(df),“千伏”,“MarkerFaceColor”,“r”)网格xlim([-15])xlabel('时间(天)')头衔(“自协方差”)

观察自协方差中的主要和次要波动。主要和次要峰值显示为等距。要验证它们是否等距,请计算并绘制后续峰值位置之间的差异。

Cycle1 = Diff(DF)/(2 * 24);CYCLE2 = DIFF(MF)/(2 * 24);子图(2,1,1)绘图(Cycl1)Ylabel(“天”)网格头衔(“主峰距离”)子地块(2,1,2)图(周期2,“r”)伊拉贝尔(“天”)网格头衔(“小峰值距离”)

平均值(周期1)
ans=7
平均值(周期2)
ans=1.0000

次要峰值表示每周7个周期,主要峰值表示每周1个周期。考虑到数据来自7天日历上的温度控制建筑,这是有意义的。第一个7天周期表示建筑温度存在每周周期性行为,其中周末温度较低,然后返回to一周内正常。1天的循环行为表明也存在每日循环行为——夜间温度较低,白天温度升高。

这个话题有用吗?