簡體   English   中英

樣品通過樣品互相關(Xcorr)matlab

[英]Samples by samples cross-correlation(Xcorr) matlab

我正在使用xcorr函數來識別信號的相似性。 以下是代碼,

r1 = max(abs(xcorr(S1, shat1,'coeff')));
r2 = max(abs(xcorr(S1,shat2,'coeff')));
if r1>r2
dn=shat2; 
else
dn=shat1; 
end

它工作得很好。 但問題是信號每個都有40,000個樣本。 實際上我確實有很多延遲。 我必須將一堆樣本(如250samples)發送到xcorr中以消除延遲。 但是我該怎么做? 我知道我必須使用for循環,但發現這樣做很困難。 有人可以建議我怎么做。我嘗試過這樣的事情

for i=1:250:40000
r1 = max(abs(xcorr(S1(:,i), shat1(:,i),'coeff')));

但完全迷失了。 有人建議請......

如果我理解正確,你想要一個接一個地交叉關聯250個樣本的塊。 根據您的嘗試進行調整,請嘗試

for i=1:250:40000
 r1 = max(abs(xcorr(S1(i:i+249), shat1(i:i+249),'coeff')));
end

作為旁注,您對信號之間的最大滯后有何了解? 如果你可以安全地假設你的信號之間的時間偏移低於250(其拆分為間隔的想法建議),你可以通過修改使用原來的代碼節省計算時間maxlags ,對於參數xcorr

maxlags=250; %# or some other reasonable value, maybe even 100? 50?
r1 = max(abs(xcorr(S1, shat1,maxlags, 'coeff')));
r2 = max(abs(xcorr(S1, shat2,maxlags, 'coeff')));
...

我沒有測試過多快,但我的猜測是你可以完全避免你的循環......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM