matlab測量計算信號的類似度

原文連接: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天的循環行爲表示天天都有循環行爲-夜間溫度較低,白天則升高。

相關文章
相關標籤/搜索