0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

什么是互相關(guān)函數(shù)

FPGA之家 ? 來(lái)源:FPGA之家 ? 作者:FPGA之家 ? 2022-07-10 09:14 ? 次閱讀

[導(dǎo)讀] 在工程應(yīng)用時(shí),有時(shí)候需要計(jì)算兩個(gè)信號(hào)序列的相似度,實(shí)際信號(hào)由于在采集過(guò)程中會(huì)混入干擾,如果簡(jiǎn)單的依次比較各樣本是否相等或者差值,則很難判定兩個(gè)信號(hào)序列的相似程度。本文來(lái)聊聊我的一些思路。

什么是互相關(guān)函數(shù)?在統(tǒng)計(jì)學(xué)中,相關(guān)是描述兩個(gè)隨機(jī)變量序列或二元數(shù)據(jù)之間的統(tǒng)計(jì)關(guān)系,無(wú)論是否具有因果關(guān)系。廣義上講,相關(guān)性是統(tǒng)計(jì)上的關(guān)聯(lián)程度,它通常指的是兩個(gè)變量的線性相關(guān)的程度。比如商品的價(jià)格和消費(fèi)者購(gòu)買愿意數(shù)量之間的關(guān)系,也即所謂的需求曲線。

相關(guān)性是有用的,因?yàn)樗鼈兛梢悦枋鲆环N可在實(shí)踐中加以利用的預(yù)測(cè)作用。例如,根據(jù)電力需求和天氣之間的相關(guān)性,電力公司可能會(huì)在天氣涼快時(shí)候生產(chǎn)更少的電力。在這個(gè)例子中,有一定的因果關(guān)系存在,因?yàn)闃O端天氣導(dǎo)致人們使用更多的電力用于取暖或制冷。然而,一般而言,相關(guān)性的存在并不足以推斷出因果關(guān)系的存在,也就是說(shuō)相關(guān)性并不意味著因果關(guān)系。

連續(xù)信號(hào)里,為函數(shù)及的互相關(guān)函數(shù)定義為:

離散信號(hào),假設(shè)兩個(gè)信號(hào)序列x(n)及y(n),每個(gè)序列的能量都是有限能量序列,則x(n)及y(n)的互相關(guān)序列為:

那么互相關(guān)函數(shù)就是描述在連續(xù)信號(hào)或離散序列的相關(guān)程度的一種統(tǒng)計(jì)度量。

什么是相關(guān)系數(shù)?最熟悉的度量?jī)蓚€(gè)量之間的相關(guān)性的方法是皮爾遜乘積矩相關(guān)系數(shù)(PPMCC),也稱為“皮爾遜相關(guān)系數(shù)”,通常簡(jiǎn)稱為“相關(guān)系數(shù)”。在數(shù)學(xué)上,它被定義為對(duì)原始數(shù)據(jù)的最小二乘擬合的質(zhì)量(擬合程度或效果)。它是由數(shù)據(jù)集兩個(gè)變量的協(xié)方差的比率,歸一化到他們的方差的平方根得到的。數(shù)學(xué)上,兩個(gè)變量的協(xié)方差除以標(biāo)準(zhǔn)差的乘積。

皮爾遜積矩相關(guān)系數(shù)試圖通過(guò)兩個(gè)隨機(jī)序列的數(shù)據(jù)集建立一條最佳擬合曲線,實(shí)質(zhì)上是通過(guò)列出期望和由此產(chǎn)生的皮爾遜相關(guān)系數(shù)表明實(shí)際數(shù)據(jù)集離預(yù)期值有多遠(yuǎn)。根據(jù)皮爾遜相關(guān)系數(shù)的符號(hào),如果數(shù)據(jù)集的變量之間存在某種關(guān)系,可以得到負(fù)相關(guān)或正相關(guān)。其定義公式如下:

上述公式展開(kāi)為:

在根據(jù)期望計(jì)算公式展開(kāi),就得到:

如果考察延遲d處的互相關(guān),則上述公式就變?yōu)椋?/p>

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

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

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

1表示完全正相關(guān)

0表示不相關(guān)

-1表示完全負(fù)相關(guān)

為了方便理解,假定兩個(gè)隨機(jī)序列按照下面各類情況分布,下面的數(shù)字為相關(guān)系數(shù):

dd11c380-ff1b-11ec-ba43-dac502259ad0.png

程序如何實(shí)現(xiàn)呢?上述公式在實(shí)際編程時(shí),當(dāng)然可以直接按照公式編制代碼,如果仔細(xì)觀察會(huì)發(fā)現(xiàn)該公式可以進(jìn)一步簡(jiǎn)化,過(guò)程省略:

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

#include 《stdio.h》#include 《math.h》/* 返回值在區(qū)間: [-1,1] *//* 如返回-10,則證明輸入參數(shù)無(wú)效 */#define delta 0.0001fdouble 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《n;i++)

{

sum_s12 += s1[i]*s2[i];

sum_s1 += s1[i];

sum_s2 += s2[i];

sum_s1s1 += s1[i]*s1[i];

sum_s2s2 += s2[i]*s2[i];

}

temp1 = n*sum_s1s1-sum_s1*sum_s1;

temp2 = n*sum_s2s2-sum_s2*sum_s2;

/* 分母不可為0 */

if( (temp1》-delta && temp1《delta) ||

(temp2》-delta && temp2《delta) ||

(temp1*temp2《=0) )

{

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

”,pxy);

pxy = calculate_corss_correlation(s1,s1,30);

printf(“pxy of s1 and s1:%f

”,pxy);

for(int i=0;i《n;i++)

{

s3[i] = -1*s1[i];

}

pxy = calculate_corss_correlation(s1,s3,30);

printf(“pxy of s1 and s3:%f

”,pxy);

return 0;

}

運(yùn)行結(jié)果為:

pxy of s1 and s2:0.997435

pxy of s1 and s1:1.000000

pxy of s1 and s1:-1.000000

將這三個(gè)信號(hào)繪制成波形來(lái)看看:

dd29031a-ff1b-11ec-ba43-dac502259ad0.png

由圖看出:

S1與S2非常相似,其相關(guān)系數(shù)為0.997435,高度相似

S1與-S1則剛好相位相反,理想反相關(guān),其相關(guān)系數(shù)為-1

S1與S1則理所當(dāng)然是一樣的,其相關(guān)系數(shù)為1

再來(lái)一組信號(hào)對(duì)比一下:

dd3f179a-ff1b-11ec-ba43-dac502259ad0.png

其波形數(shù)據(jù)為:

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

};

利用上述代碼計(jì)算S1與S6,S1與S7的相關(guān)系數(shù):

pxy of s1 and s6:0.402428

pxy of s1 and s7:0.612618

可見(jiàn),S6、S7與S1的相關(guān)系數(shù)越來(lái)越大,從波形上看相似度也越來(lái)越大。

總結(jié)一下通過(guò)相關(guān)系數(shù)可以比較完美的判斷兩個(gè)信號(hào)序列,或者兩個(gè)隨機(jī)變量之間的相似度。相關(guān)系數(shù)以及互相關(guān)函數(shù)應(yīng)用很廣,本文僅僅描述了一個(gè)工程上應(yīng)用較多的實(shí)際栗子。事實(shí)上,該數(shù)學(xué)特性有著廣泛的應(yīng)用,有興趣的可以深度學(xué)習(xí)探討一下。

原文標(biāo)題:數(shù)學(xué)之美:判定兩個(gè)隨機(jī)信號(hào)序列的相似度

文章出處:【微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

審核編輯:彭靜
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    7128

    瀏覽量

    89364
  • 編程
    +關(guān)注

    關(guān)注

    88

    文章

    3636

    瀏覽量

    93896
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4344

    瀏覽量

    62864

原文標(biāo)題:數(shù)學(xué)之美:判定兩個(gè)隨機(jī)信號(hào)序列的相似度

文章出處:【微信號(hào):zhuyandz,微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    SUMIF函數(shù)與SUMIFS函數(shù)的區(qū)別

    SUMIF函數(shù)和SUMIFS函數(shù)都是Excel中用于條件求和的函數(shù),它們可以幫助用戶根據(jù)特定的條件對(duì)數(shù)據(jù)進(jìn)行求和。盡管它們的基本功能相似,但在使用場(chǎng)景和功能上存在一些差異。以下是對(duì)這兩個(gè)函數(shù)
    的頭像 發(fā)表于 10-30 09:51 ?1461次閱讀

    SUMIF函數(shù)使用教程

    SUMIF函數(shù)是Excel中非常實(shí)用的函數(shù)之一,能夠根據(jù)指定條件對(duì)數(shù)據(jù)進(jìn)行篩選和求和操作。以下是對(duì)SUMIF函數(shù)使用方法的詳細(xì)教程: 一、基本語(yǔ)法 SUMIF函數(shù)的基本語(yǔ)法為: =SU
    的頭像 發(fā)表于 10-30 09:50 ?597次閱讀

    如何由系統(tǒng)函數(shù)求頻率響應(yīng)

    頻率響應(yīng)函數(shù)表征了測(cè)試系統(tǒng)對(duì)給定頻率下的穩(wěn)態(tài)輸出與輸入的關(guān)系,可以通過(guò)系統(tǒng)函數(shù)(或稱為傳遞函數(shù))來(lái)求解。以下是由系統(tǒng)函數(shù)求頻率響應(yīng)的步驟: 一、理解系統(tǒng)
    的頭像 發(fā)表于 10-18 09:32 ?1659次閱讀

    合宙LuatOS應(yīng)用,與時(shí)間相關(guān)那些事

    ()函數(shù)了。 接下來(lái),我會(huì)講一些與這個(gè)函數(shù)以及其他時(shí)間函數(shù)相關(guān)的知識(shí)。 一、時(shí)間戳相關(guān) os.time()這個(gè)
    的頭像 發(fā)表于 09-25 07:25 ?327次閱讀
    合宙LuatOS應(yīng)用,與時(shí)間<b class='flag-5'>相關(guān)</b>那些事

    面試常考+1:函數(shù)指針與指針函數(shù)、數(shù)組指針與指針數(shù)組

    在嵌入式開(kāi)發(fā)領(lǐng)域,函數(shù)指針、指針函數(shù)、數(shù)組指針和指針數(shù)組是一些非常重要但又容易混淆的概念。理解它們的特性和應(yīng)用場(chǎng)景,對(duì)于提升嵌入式程序的效率和質(zhì)量至關(guān)重要。一、指針函數(shù)函數(shù)指針指針
    的頭像 發(fā)表于 08-10 08:11 ?973次閱讀
    面試???1:<b class='flag-5'>函數(shù)</b>指針與指針<b class='flag-5'>函數(shù)</b>、數(shù)組指針與指針數(shù)組

    esp32獲取時(shí)間戳的相關(guān)函數(shù)是哪個(gè)?

    esp32 獲取時(shí)間戳的相關(guān)函數(shù)是哪個(gè),我用了sntp_get_current_timestamp這個(gè)函數(shù),編譯的時(shí)候說(shuō)找不到,有沒(méi)有相關(guān)的例程參考?
    發(fā)表于 06-11 07:26

    函數(shù)信號(hào)發(fā)生器怎么調(diào)頻率

    函數(shù)信號(hào)發(fā)生器是一種常用的電子測(cè)試設(shè)備,它能夠產(chǎn)生各種波形、頻率和幅度的信號(hào),廣泛應(yīng)用于科研、教學(xué)、生產(chǎn)和維修等領(lǐng)域。在使用函數(shù)信號(hào)發(fā)生器時(shí),調(diào)整頻率是其中一個(gè)非常重要的步驟。本文將詳細(xì)介紹函數(shù)信號(hào)發(fā)生器如何調(diào)整頻率,以及
    的頭像 發(fā)表于 05-20 18:23 ?1708次閱讀

    回調(diào)函數(shù)(callback)是什么?回調(diào)函數(shù)的實(shí)現(xiàn)方法

    回調(diào)函數(shù)是一種特殊的函數(shù),它作為參數(shù)傳遞給另一個(gè)函數(shù),并在被調(diào)用函數(shù)執(zhí)行完畢后被調(diào)用?;卣{(diào)函數(shù)通常用于事件處理、異步編程和處理各種操作系統(tǒng)和
    發(fā)表于 03-12 11:46 ?3106次閱讀

    淺談C語(yǔ)言中的函數(shù)定義

    如果函數(shù)要使用參數(shù),則必須聲明接受參數(shù)值的變量。這些變量稱為函數(shù)的形式參數(shù)。 形式參數(shù)就像函數(shù)內(nèi)的其他局部變量,在進(jìn)入函數(shù)時(shí)被創(chuàng)建,退出函數(shù)
    發(fā)表于 03-11 10:09 ?430次閱讀

    函數(shù)指針與回調(diào)函數(shù)的應(yīng)用實(shí)例

    通常我們說(shuō)的指針變量是指向一個(gè)整型、字符型或數(shù)組等變量,而函數(shù)指針是指向函數(shù)函數(shù)指針可以像一般函數(shù)一樣,用于調(diào)用函數(shù)、傳遞參數(shù)。
    的頭像 發(fā)表于 03-07 11:13 ?424次閱讀
    <b class='flag-5'>函數(shù)</b>指針與回調(diào)<b class='flag-5'>函數(shù)</b>的應(yīng)用實(shí)例

    函數(shù)發(fā)生器輸出電壓是什么電壓

    函數(shù)發(fā)生器是一種電子設(shè)備,常用于產(chǎn)生特定波形的電信號(hào)。它是電工、電子工程師以及其他相關(guān)領(lǐng)域的重要工具。函數(shù)發(fā)生器可以產(chǎn)生高頻、低頻甚至是不同形狀的波形,如正弦波、方波、三角波、鋸齒波等。而輸出電壓
    的頭像 發(fā)表于 02-23 15:29 ?1442次閱讀

    函數(shù)信號(hào)發(fā)生器的功能及相關(guān)使用領(lǐng)域

    函數(shù)信號(hào)發(fā)生器是一種電子設(shè)備,它能夠產(chǎn)生各種類型的電信號(hào),包括正弦波、方波、脈沖波、三角波和鋸齒波等。這些信號(hào)可以用來(lái)模擬和測(cè)試各種電子和電氣設(shè)備,以及在教育和研究領(lǐng)域中進(jìn)行實(shí)驗(yàn)和測(cè)量。 函數(shù)信號(hào)
    的頭像 發(fā)表于 02-23 14:49 ?1891次閱讀

    verilog function函數(shù)的用法

    Verilog 是一種硬件描述語(yǔ)言 (HDL),主要用于描述數(shù)字電子電路的行為和結(jié)構(gòu)。在 Verilog 中,函數(shù) (Function) 是一種用于執(zhí)行特定任務(wù)并返回一個(gè)值的可重用代碼塊。函數(shù)
    的頭像 發(fā)表于 02-22 15:49 ?5986次閱讀

    內(nèi)聯(lián)函數(shù)定義 為什么需要內(nèi)聯(lián)函數(shù)

    inline關(guān)鍵字是C99標(biāo)準(zhǔn)的型關(guān)鍵字,其作用是將函數(shù)展開(kāi),把函數(shù)的代碼復(fù)制到每一個(gè)調(diào)用處。
    的頭像 發(fā)表于 02-19 12:20 ?574次閱讀

    傳遞函數(shù)的定義是什么 傳遞函數(shù)的拉氏反變換是什么響應(yīng)

    傳遞函數(shù)的定義: 傳遞函數(shù)是一種數(shù)學(xué)工具,用于描述線性時(shí)不變系統(tǒng)(LTI系統(tǒng))的輸入與輸出之間的關(guān)系,通常用H(s)表示。傳遞函數(shù)是Laplace變換的函數(shù),其中s是復(fù)變量。傳遞
    的頭像 發(fā)表于 02-01 10:53 ?4793次閱讀