日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > > 嵌入式微處理器
[導讀][導讀] 在工程 應用時,有時候需要計算兩個信號序列的相似度,實際信號由于在采集過程中會混入干擾,如果簡單的依次比較各樣本是否相等或者差值,則很難判定兩個信號序列的相似程度。 本文來聊聊我的一些思路。 什么是互相關函數? 在統(tǒng)計學中,相關是描述兩

[導讀] 在工程 應用時,有時候需要計算兩個信號序列的相似度,實際信號由于在采集過程中會混入干擾,如果簡單的依次比較各樣本是否相等或者差值,則很難判定兩個信號序列的相似程度。 本文來聊聊我的一些思路。

什么是互相關函數?

在統(tǒng)計學中,相關是描述兩個隨機變量序列或二元數據之間的統(tǒng)計關系,無論是否具有因果關系。廣義上講,相關性是統(tǒng)計上的關聯(lián)程度,它通常指的是兩個變量的線性相關的程度。比如商品的價格和消費者購買愿意數量之間的關系,也即所謂的需求曲線。

相關性是有用的,因為它們可以描述一種可在實踐中加以利用的預測作用。例如,根據電力需求和天氣之間的相關性,電力公司可能會在天氣涼快時候生產更少的電力。在這個例子中,有一定的因果關系存在,因為極端天氣導致人們使用更多的電力用于取暖或制冷。然而,一般而言,相關性的存在并不足以推斷出因果關系的存在,也就是說相關性并不意味著因果關系。

那么,互相關函數就是描述在連續(xù)信號或離散序列的相關程度的一種統(tǒng)計度量。

什么是相關系數?

最熟悉的度量兩個量之間的相關性的方法是皮爾遜乘積矩相關系數(PPMCC),也稱為“皮爾遜相關系數”,通常簡稱為“相關系數”。在數學上,它被定義為對原始數據的最小二乘擬合的質量(擬合程度或效果)。它是由數據集兩個變量的協(xié)方差的比率,歸一化到他們的方差的平方根得到的。數學上,兩個變量的協(xié)方差除以標準差的乘積。

皮爾遜積矩相關系數試圖通過兩個隨機序列的數據集建立一條最佳擬合曲線,實質上是通過列出期望和由此產生的皮爾遜相關系數表明實際數據集離預期值有多遠。根據皮爾遜相關系數的符號,如果數據集的變量之間存在某種關系,可以得到負相關或正相關。

為了方便理解,本文就不考察延遲節(jié)拍了。

相關系數有啥用?

皮爾遜相關系數的絕對值不大于1是Cauchy–Schwarz不等式的推論(有興趣的可以去找書看看)。因此,相關系數的值在[-1,1]之間。在理想的增加線性相關關系情況下,相關系數為+1;在理想的減少(反相關)線性關系情況下,相關系數為-1;在所有其他取值情況下,表示變量之間的線性相關程度。當它接近零時,更接近于不相關。系數越接近-1或1,變量之間的相關性越強。

故,相關系數其值范圍分布在區(qū)間[-1,1]:

  • 1表示完全正相關
  • 0表示不相關
  • -1表示完全負相關

為了方便理解,假定兩個隨機序列按照下面各類情況分布,下面的數字為相關系數:

程序如何實現呢?

上述公式在實際編程時,當然可以直接按照公式編制代碼,如果仔細觀察會發(fā)現該公式可以進一步簡化,過程省略。

由這個公式就很容易編程了,干貨在這里,可以拿去稍加改造即可使用:

#include  #include  /* 返回值在區(qū)間: [-1,1]          */ /* 如返回-10,則證明輸入參數無效    */ #define delta 0.0001f double calculate_corss_correlation(double *s1, double *s2,int n) { double sum_s12 = 0.0; double sum_s1  = 0.0; double sum_s2  = 0.0; double sum_s1s1 = 0.0; //s1^2 double sum_s2s2 = 0.0; //s2^2 double pxy = 0.0; double temp1 = 0.0; double temp2 = 0.0; if( s1==NULL || s2==NULL || n<=0) return -10; for(int i=0;i/* 分母不可為0 */ if( (temp1>-delta && temp1-delta && temp20) )
    { return -10;  
    }       
    
    pxy = (n*sum_s12-sum_s1*sum_s2)/sqrt(temp1*temp2); return pxy;
} double s1[30] = { 0.309016989,0.587785244,0.809016985,0.95105651,1,0.951056526, 0.809017016,0.587785287,0.30901704,5.35898E-08,0,0, 0,0,0,0,0,0, 0,0,0,0,0,0, 0,0,0,0,0,0 }; double s2[30] = { 0.343282816,0.686491368,0.874624132,0.99459642,1.008448609, 1.014252458,0.884609221,0.677632906,0.378334666,0.077878732, 0.050711886,0.066417083,0.088759401,0.005440732,0.04225661, 0.035349939,0.0631196,0.007566056,0.053183895,0.073143706, 0.080285063,0.030110227,0.044781145,0.01875573,0.08373928, 0.04550342,0.038880858,0.040611891,0.046116826,0.087670453 }; int main(void) { double pxy; double s3[30];

    pxy = calculate_corss_correlation(s1,s2,30); printf("pxy of s1 and s2:%f\n",pxy);  
    
    pxy = calculate_corss_correlation(s1,s1,30); printf("pxy of s1 and s1:%f\n",pxy); for(int i=0;i-1*s1[i];
    }
    pxy = calculate_corss_correlation(s1,s3,30); printf("pxy of s1 and s3:%f\n",pxy); return 0;
}

運行結果為:

pxy of s1 and s2:0.997435 pxy of s1 and s1:1.000000 pxy of s1 and s1:-1.000000 

將這三個信號繪制成波形來看看:

由圖看出:

  • S1與S2非常相似,其相關系數為0.997435,高度相似
  • S1與-S1則剛好相位相反,理想反相關,其相關系數為-1
  • S1與S1則理所當然是一樣的,其相關系數為1

再來一組信號對比一下:

其波形數據為:

double s1[30]={ 0.309016989,0.587785244,0.809016985,0.95105651,1, 0.951056526,0.809017016,0.587785287,0.30901704,5.35898E-08, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0 }; double s6[30]={ 0,0,0.187381311,0.368124547,0.535826787, 0.684547097,0.809016985,0.904827044,0.968583156,0.998026727, 0.992114705,0.951056526,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0 }; double s7[30]={ 0.187381311,0.368124547,0.535826787,0.684547097,0.809016985, 0.904827044,0.968583156,0.998026727,0.992114705,0.951056526, 0.876306697,0.770513267,0.637424022,0.481753714,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0 };

利用上述代碼計算S1與S6,S1與S7的相關系數:

pxy of s1 and s6:0.402428 pxy of s1 and s7:0.612618 

可見,S6、S7與S1的相關系數越來越大,從波形上看相似度也越來越大。

總結一下

通過相關系數可以比較完美的判斷兩個信號序列,或者兩個隨機變量之間的相似度。相關系數以及互相關函數應用很廣,本文僅僅描述了一個工程上應用較多的實際栗子。事實上,該數學特性有著廣泛的應用,有興趣的可以深度學習探討一下。


本文授權轉載自公眾號“嵌入式客?!?/span>,作者逸珺


-END-




推薦閱讀



【01】數學對于編程來說重要嗎?編程大佬現身說“線性代數” 【02】學不好后悔一輩子:刨根問底之鏈表數據結構 【03】精彩!由FPGA觸發(fā)的芯片戰(zhàn)爭! 【04】12條CPU硬核干貨!最全解釋! 【05】史上最經典的“史密斯圓圖”講解


免責聲明:整理文章為傳播相關技術,版權歸原作者所有,如有侵權,請聯(lián)系刪除

免責聲明:本文內容由21ic獲得授權后發(fā)布,版權歸原作者所有,本平臺僅提供信息存儲服務。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!

嵌入式ARM

掃描二維碼,關注更多精彩內容

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
關閉