在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

什么是互相關函數

FPGA之家 ? 來源:FPGA之家 ? 作者:FPGA之家 ? 2022-07-10 09:14 ? 次閱讀

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

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

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

連續信號里,為函數及的互相關函數定義為:

離散信號,假設兩個信號序列x(n)及y(n),每個序列的能量都是有限能量序列,則x(n)及y(n)的互相關序列為:

那么互相關函數就是描述在連續信號或離散序列的相關程度的一種統計度量。

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

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

上述公式展開為:

在根據期望計算公式展開,就得到:

如果考察延遲d處的互相關,則上述公式就變為:

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

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

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

1表示完全正相關

0表示不相關

-1表示完全負相關

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

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

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

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

#include 《stdio.h》#include 《math.h》/* 返回值在區間: [-1,1] *//* 如返回-10,則證明輸入參數無效 */#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;

}

運行結果為:

pxy of s1 and s2:0.997435

pxy of s1 and s1:1.000000

pxy of s1 and s1:-1.000000

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

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

由圖看出:

S1與S2非常相似,其相關系數為0.997435,高度相似

S1與-S1則剛好相位相反,理想反相關,其相關系數為-1

S1與S1則理所當然是一樣的,其相關系數為1

再來一組信號對比一下:

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

其波形數據為:

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的相關系數越來越大,從波形上看相似度也越來越大。

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

原文標題:數學之美:判定兩個隨機信號序列的相似度

文章出處:【微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。

審核編輯:彭靜
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據
    +關注

    關注

    8

    文章

    7118

    瀏覽量

    89342
  • 編程
    +關注

    關注

    88

    文章

    3634

    瀏覽量

    93883
  • 函數
    +關注

    關注

    3

    文章

    4344

    瀏覽量

    62847

原文標題:數學之美:判定兩個隨機信號序列的相似度

文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    SUMIF函數與SUMIFS函數的區別

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

    SUMIF函數使用教程

    SUMIF函數是Excel中非常實用的函數之一,能夠根據指定條件對數據進行篩選和求和操作。以下是對SUMIF函數使用方法的詳細教程: 一、基本語法 SUMIF函數的基本語法為: =SU
    的頭像 發表于 10-30 09:50 ?583次閱讀

    如何由系統函數求頻率響應

    頻率響應函數表征了測試系統對給定頻率下的穩態輸出與輸入的關系,可以通過系統函數(或稱為傳遞函數)來求解。以下是由系統函數求頻率響應的步驟: 一、理解系統
    的頭像 發表于 10-18 09:32 ?1643次閱讀

    合宙LuatOS應用,與時間相關那些事

    ()函數了。 接下來,我會講一些與這個函數以及其他時間函數相關的知識。 一、時間戳相關 os.time()這個
    的頭像 發表于 09-25 07:25 ?324次閱讀
    合宙LuatOS應用,與時間<b class='flag-5'>相關</b>那些事

    面試常考+1:函數指針與指針函數、數組指針與指針數組

    在嵌入式開發領域,函數指針、指針函數、數組指針和指針數組是一些非常重要但又容易混淆的概念。理解它們的特性和應用場景,對于提升嵌入式程序的效率和質量至關重要。一、指針函數函數指針指針
    的頭像 發表于 08-10 08:11 ?967次閱讀
    面試常考+1:<b class='flag-5'>函數</b>指針與指針<b class='flag-5'>函數</b>、數組指針與指針數組

    esp32獲取時間戳的相關函數是哪個?

    esp32 獲取時間戳的相關函數是哪個,我用了sntp_get_current_timestamp這個函數,編譯的時候說找不到,有沒有相關的例程參考?
    發表于 06-11 07:26

    函數信號發生器怎么調頻率

    函數信號發生器是一種常用的電子測試設備,它能夠產生各種波形、頻率和幅度的信號,廣泛應用于科研、教學、生產和維修等領域。在使用函數信號發生器時,調整頻率是其中一個非常重要的步驟。本文將詳細介紹函數信號發生器如何調整頻率,以及
    的頭像 發表于 05-20 18:23 ?1706次閱讀

    回調函數(callback)是什么?回調函數的實現方法

    回調函數是一種特殊的函數,它作為參數傳遞給另一個函數,并在被調用函數執行完畢后被調用。回調函數通常用于事件處理、異步編程和處理各種操作系統和
    發表于 03-12 11:46 ?3095次閱讀

    淺談C語言中的函數定義

    如果函數要使用參數,則必須聲明接受參數值的變量。這些變量稱為函數的形式參數。 形式參數就像函數內的其他局部變量,在進入函數時被創建,退出函數
    發表于 03-11 10:09 ?430次閱讀

    函數指針與回調函數的應用實例

    通常我們說的指針變量是指向一個整型、字符型或數組等變量,而函數指針是指向函數函數指針可以像一般函數一樣,用于調用函數、傳遞參數。
    的頭像 發表于 03-07 11:13 ?423次閱讀
    <b class='flag-5'>函數</b>指針與回調<b class='flag-5'>函數</b>的應用實例

    函數發生器輸出電壓是什么電壓

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

    函數信號發生器的功能及相關使用領域

    函數信號發生器是一種電子設備,它能夠產生各種類型的電信號,包括正弦波、方波、脈沖波、三角波和鋸齒波等。這些信號可以用來模擬和測試各種電子和電氣設備,以及在教育和研究領域中進行實驗和測量。 函數信號
    的頭像 發表于 02-23 14:49 ?1886次閱讀

    verilog function函數的用法

    Verilog 是一種硬件描述語言 (HDL),主要用于描述數字電子電路的行為和結構。在 Verilog 中,函數 (Function) 是一種用于執行特定任務并返回一個值的可重用代碼塊。函數
    的頭像 發表于 02-22 15:49 ?5962次閱讀

    內聯函數定義 為什么需要內聯函數

    inline關鍵字是C99標準的型關鍵字,其作用是將函數展開,把函數的代碼復制到每一個調用處。
    的頭像 發表于 02-19 12:20 ?572次閱讀

    傳遞函數的定義是什么 傳遞函數的拉氏反變換是什么響應

    傳遞函數的定義: 傳遞函數是一種數學工具,用于描述線性時不變系統(LTI系統)的輸入與輸出之間的關系,通常用H(s)表示。傳遞函數是Laplace變換的函數,其中s是復變量。傳遞
    的頭像 發表于 02-01 10:53 ?4779次閱讀
    主站蜘蛛池模板: 3344在线观看永久免费| 在线视频亚洲| 日本黄色网址大全| 久久人人视频| 日本视频网站在线www色| 午夜免费福利影院| 天天色天天射天天干| 色小视频| 欧美精品videosex性欧美| 六月丁香色婷婷| 狠狠色综合网站久久久久久久| 高清国产美女在线观看| 最刺激黄a大片免费观看| 手机看片1024免费视频| www.色黄| 男人午夜禁片在线观看| 免费啪| 1024免费看片| 性xxxxx| 亚洲人成77777在线观看网| 天天射综合网站| 美女拍拍拍免费视频观看| 俺也去第四色| 免费高清视频在线观看| 日本69sex护士wwxx| 综合成人在线| 日本免费黄网站| 成人xxxxx| 久久久久免费| 性做久久久久久网站| 性生大片一级毛片免费观看| 欧美高清一区二区三| 成人欧美精品一区二区不卡| 手机看片日韩永久福利盒子| 1024手机看片国产旧版你懂的 | 精品手机在线| 午夜在线观看视频在线播放版| 国产午夜在线观看视频播放| 亚洲男人的天堂在线播放| 欧美不卡一区| 四虎传媒|