2013-12-17 39 views
5

我在A組中有20個信號(時間過程),B組中有20個信號。我想找到一個方法來顯示A組不同於B組。例如, ,我爲每組中的信號運行xcorr。但現在我需要以某種方式比較它們。我試圖採取每個xcorr對的最大幅度,這是排序最大相似度的度量。然後我比較了兩組之間的所有這些值,但沒有區別。我還可以做些什麼?我也可以比較頻譜,但後來我再也不知道要採用什麼頻率範圍。 任何建議/引用高度讚賞!兩個信號之間的相似性:尋找簡單的測量

我在每組中有大約20個信號。那些是我的樣品。我不知道a-prirori可能是什麼區別。在這裏,我爲每個組帶來9個樣本信號,它們的自相關和信號子集的互相關性(組1對組1對組2對組2對組2)。我沒有看到任何明顯的差異。我也不明白你如何建議比較交叉相關性,我應該採取什麼樣的高峯?所有的信號都趨於平穩和z得分。

enter image description hereenter image description here進入這裏 enter image description here enter image description here enter image description here enter image description here enter image description here

+0

您能否告訴我們每個波形中的採樣數量?有沒有明顯的週期性?信號與自身的自相關(功率譜)通常是存在的信號種類的良好指示。並且A中不同信號(「相似」)之間的互相關可能高於相應的AB相關性。你希望他們有什麼不同?最終的測試應該是:取兩個隨機信號(可能來自A,可能來自B)。進行測試。如果測試值 same,else - > different?顯示統計差異。 – Floris

+0

謝謝你的回答! – user1597969

+1

在這裏,我添加了細節到我原來的職位。 – user1597969

回答

6

好形象的描述,這可能是過於簡單化的答案,和一個非常複雜的措施,但也許其價值的東西。

爲了比較信號,我們確實需要建立一些標準來比較它們。這可能是很多事情。如果我們希望看起來視覺上相似的信號,我們執行時域分析。如果我們正在談論類似的音頻信號,我們關心頻率或時頻分析。如果信號應該代表噪聲,那麼信號變化應該是一個很好的衡量標準。總的來說,我們可能想要使用各種措施的組合。我們可以用加權指數來做到這一點。

首先讓我們來確定一下我們有什麼:有兩組信號:A組和B組。我們想要一些顯示A組不同於B組的信號。這些信號是去趨勢的。

我們採取的一種信號和信號B在B的事情的清單,我們可以比較:在時域(靜態)

  • 相似度:乘到位總和。

  • 時域相似性(帶*):取每個信號的fft, 乘以ifft。 (我相信這相當於MATLAB的xcorr。)在頻域(靜態**)

  • 相似:每個信號的採取FFT, 乘法和總和。

  • 頻域相似性(帶*):乘以兩個 信號並取fft。這將顯示信號是否共享類似的光譜形狀。

  • 相似的能量(或功率,如果不同的長度):廣場兩個 信號和每個求和(和由用於電力信號長度除)。 (由於 的信號被去除了,所以這應該是信號變化)。然後 減去並取絕對值來衡量信號變化 的相似性。

*(帶班) - 你可以選擇來總結整個相關向量測量總一般關聯,你可以選擇總和的超過某個閾值的相關矢量值只(好像您期望另一個信號的回波),或者從相關向量(其指數是第二個信號中與第一個信號的相關性最大的相移)中取最大值。另外,如果達到最大相關所需的移位量是重要的(即,如果信號只有在相對較小的移位才能達到最大相關點時才相似),那麼可以包含指數位移的度量。 (頻域相似度) - 例如,如果您只關心更高頻率的結構(fs/4以上),您可能需要掩蓋您不關心的部分頻譜, ,你可以這樣做:

mask = zeros(1,n); mask(n/4): 
freq_static = mean(fft(a) .* fft(b) .* mask); 

而且,我們可能想實現像這樣一個循環相關:

function c = circular_xcorr(a,b) 
c = xcorr(a,b); 
mid = length(c)/2; 
c = c(1:mid) + c(mid+1:end); 
end 

最後,我們選擇的是重要的或相關的特徵,並創建一個加權指數。例如:

n = 100; 
a = rand(1,n); b = rand(1,n); 
time_corr_thresh = .8 * n; freq_corr_thresh = .6 * n; 
time_static = max(a .* b); 
time_shifted = circular_xcorr(a,b); time_shifted = sum(time_shifted(time_shifted > time_corr_thresh)); 
freq_static = max(fft(a) .* fft(b)); 
freq_shifted = fft(a .* b);  freq_shifted = sum(freq_shifted(freq_shifted > freq_corr_thresh)); 
w1 = 0; w2 = 1; w2 = .7; w3 = 0; 
index = w1 * time_static + w1 * time_shifted + w2 * freq_static + w3 * freq_shifted; 

我們爲每對信號計算這個指數。

我希望信號表徵的這個輪廓有所幫助。如果有任何疑問,請留言。

+0

非常感謝您的回答!我會努力工作,並會在這裏更新你。只是關於總體框架。據我所知有三種可能的方法來確定效果: 1.比較每組內的所有可能的配對,並使用t檢驗來顯示兩組之間我的相似性度量顯着不同。 2。比較每個組內和兩組之間的所有可能的對,並顯示組內的相似性度量大於組間的相似性度量。 – user1597969

+0

3.如果對於每個信號我有兩個測量值(兩個測試儀),所以我可以計算出這兩個測試儀之間每個樣本組的相似性,然後使用t檢驗比較組間結果(如[1]中所示) 。這個結果也會給我一個重現性的測量。 有意義嗎? – user1597969

+0

哦,是啊!我認爲這會很好。我很高興你問這個,因爲我可能會爲我的閃爍研究做一個類似的組相似性測試:) – Brian

相關問題