matlab信号分割与比对,matlab测量计算信号的相似度
本示例說明如何測量信號相似度。將回答以下問題:如何比較具有不同長度或不同采樣率的信號?如何確定測量中是否存在信號或僅有噪聲?有兩個信號相關嗎?如何測量兩個信號之間的延遲?
比較具有不同采樣率的信號
考慮一個音頻信號數據庫和一個模式匹配應用程序,您需要在其中識別正在播放的歌曲。數據通常以低采樣率存儲,以占用更少的內存。
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
第一個子圖表示信號與模板1的相關性較低,而第二個子圖中的高峰值表示信號存在于第二個模板中。
互相關的峰值表示信號在61 ms之后開始存在于模板T2中。換句話說,信號T2使信號S超前499個采樣,如SampleDiff所示。
測量信號之間的延遲并對齊它們
考慮一種情況,您正在從不同的傳感器收集數據,記錄橋兩邊的汽車引起的振動。分析信號時,可能需要對齊它們。假設您有3個傳感器以相同的采樣率工作,并且它們正在測量由同一事件引起的信號。
figure, ax(1) = subplot(3,1,1); plot(s1)
我們還可以查找兩個信號之間的延遲。
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天的循環行為表示每天都有循環行為-夜間溫度較低,白天則升高。
總結
以上是生活随笔為你收集整理的matlab信号分割与比对,matlab测量计算信号的相似度的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 建行卡怎么注销网银?
- 下一篇: matlab中的导函数驻点,Matlab