原文連接:http://tecdat.cn/?p=7157數據庫
本示例說明如何測量信號類似度。將回答如下問題:如何比較具備不一樣長度或不一樣採樣率的信號?如何肯定測量中是否存在信號或僅有噪聲?有兩個信號相關嗎?如何測量兩個信號之間的延遲? 函數
考慮一個音頻信號數據庫和一個模式匹配應用程序,您須要在其中識別正在播放的歌曲。數據一般以低採樣率存儲,以佔用更少的內存。spa
figure ax(1) = subplot(3,1,1); plot((0:numel(T1)-1)/Fs1,T1,'k') ylabel('Template 1')
第一個和第二個子圖顯示了來自數據庫的模板信號。第三個子圖顯示了咱們要在數據庫中搜索的信號。僅查看時間序列,信號彷佛與兩個模板都不匹配。仔細檢查發現,信號實際上具備不一樣的長度和採樣率。code
[Fs1 Fs2 Fs] ans = 1×3 4096 4096 8192
不一樣的長度使您沒法計算兩個信號之間的差別,可是能夠經過提取信號的公共部分來輕鬆解決。此外,並不老是必須使長度相等。 blog
如今,咱們可使用xcorr
函數將信號S與模板T1和T2互相關,以肯定是否存在匹配項。事件
figure ax(1) = subplot(2,1,1); plot(lag1/Fs,C1,'k') ylabel('Amplitude') grid on
第一個子圖表示信號與模板1的相關性較低,而第二個子圖中的高峯值表示信號存在於第二個模板中。內存
互相關的峯值表示信號在61 ms以後開始存在於模板T2中。換句話說,信號T2使信號S超前499個採樣,如SampleDiff所示。 rem
考慮一種狀況,您正在從不一樣的傳感器收集數據,記錄橋兩邊的汽車引發的振動。分析信號時,可能須要對齊它們。假設您有3個傳感器以相同的採樣率工做,而且它們正在測量由同一事件引發的信號。get
figure, ax(1) = subplot(3,1,1); plot(s1)
咱們還能夠查找兩個信號之間的延遲。it
t21表示s2落後s1 350個樣本,t31表示s3領先s1 150個樣本。該信息如今可用於經過時移信號來對齊3個信號。咱們還能夠alignsignals
直接使用該功能來對齊信號,這能夠經過延遲最先的信號來對齊兩個信號。
s1 = alignsignals(s1,s3); s2 = alignsignals(s2,s3); figure ax(1) = subplot(3,1,1); plot(s1) grid on title('s1')
功率譜顯示每一個頻率中存在的功率。頻譜相干性識別信號之間的頻域相關性。趨向於0的相干值表示相應的頻率份量是不相關的,而趨向於1的值則表示相應的頻率份量是相關的。
figure t = (0:numel(sig1)-1)/Fs; subplot(2,2,1) plot(t,sig1,'k') ylabel('s1') grid on
計算兩個信號之間的頻譜相干性。 確認sig1和sig2在35 Hz和165 Hz附近具備兩個相關份量。在頻譜相干性很高的頻率中,可使用互譜相位來估計相關份量之間的相對相位。
figure subplot(2,1,1) plot(f,Cxy) title('Coherence Estimate') grid on
35 Hz份量之間的相位滯後接近-90度,而165 Hz份量之間的相位滯後接近-60度。
冬季辦公大樓中的一組溫度測量值。每30分鐘進行一次測量,持續約16.5周。
figure plot(days,temp) title('Temperature Data') xlabel('Time (days)') ylabel('Temperature (Fahrenheit)') grid on
在計算互相關以前去除信號的均值。它返回交叉協方差。將最大滯後限制爲信號的50%,以得到對互協方差的良好估計。
figure plot(lag/(2*24),xc,'k',... lag(df)/(2*24),xc(df),'kv','MarkerFaceColor','r') grid on
觀察自協方差的主要和次要波動。主峯和次峯出現等距。要驗證它們是否正確,請計算並繪製後續峯位置之間的差別。
cycle1 = diff(df)/(2*24); subplot(2,1,1) plot(cycle1) ylabel('Days')
mean(cycle1) ans = 7 mean(cycle2) ans = 1.0000
次要峯表示每週7個循環,主要峯表示每週1個循環。鑑於數據來自7天日曆上的溫度受控建築物,所以這是有道理的。第一個7天的週期表示建築物溫度有一個每週的循環行爲,其中週末溫度下降,而工做日則恢復正常。1天的循環行爲表示天天都有循環行爲-夜間溫度較低,白天則升高。