2012-11-28 30 views
0

我有一個信號,或多或少重複自己(不完全一樣,從一個到下一個,見左圖)。如果我使用自相關,我會得到許多最大值(右圖),但它不會告訴我相關性高的地方(哪個樣本號)。它給了我時滯,但我失去了有關位置的信息,也就是我原始數據中發生信號的樣本號。例如在自動更正中。繪圖,樣品500處的第二個峯值應對應於數據圖中大約樣品750處的信號。我可以通過使用一個小窗口來移動數據軌跡並找到最大值,但這需要花費太多時間。有沒有更快的方法在matlab中做到這一點?謝謝。 enter image description here使用matlab的高相關位置

+0

幫助您進一步搜索信息:重複出現的模式通常被稱爲季節性而非自相關。 –

回答

1

我認爲你誤解了自相關。 5000處的相關峯不是由於時間序列中的單個位置,而是由於時間序列與時間序列本身相似,因此偏移了5000個樣本。該峯值的大部分歸因於時間序列峯值爲18000,而時間序列峯值爲7500.例如,如果您沒有真正的週期性時間序列(即if脈衝之間的間隔不均勻)。

如果你可以隔離你的脈搏的一個例子,並選擇你想要的位置作爲你的t = 0,那麼這個脈衝與時間序列的相關性就會給你想要的東西。每個脈衝都會在發生的時間點清楚地點亮。那麼你只需要一個峯值查找器。

+0

對不起,你當然是對的。我的錯。我試圖隔離一個脈衝。我使用了一種叫做short_time_average/long_time_average的東西,也就是兩個窗口,其中一個窗口更長,另一個窗口沿着軌跡移動,當比例超過閾值時觸發。然後,我抽取幾百個樣本並與整個軌跡交叉關聯以找到下一個樣本。問題是因爲該過程對於實時數據流是自動的,信號隨時間而改變(仍然重複但改變了簽名),意味着我必須每幾秒鐘找到另一個模板信號。並且非常慢 – user1641496

0

是的,你可以使用

treshold = max(a)/2 
ind = find(a>=treshold) 

其中A是包含相關結果矩陣獲得與最大振幅的元素的索引。

+0

謝謝,但我不需要相關結果中的索引,而是原始數據中與相關結果中的峯值相對應的索引。 – user1641496