0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

什么是互相关函数?什么是相关系数?

FPGA之家 来源:FPGA之家 2020-09-07 17:04 次阅读

[导读] 在工程应用时,有时候需要计算两个信号序列的相似度,实际信号由于在采集过程中会混入干扰,如果简单的依次比较各样本是否相等或者差值,则很难判定两个信号序列的相似程度。本文来聊聊我的一些思路。

什么是互相关函数?

在统计学中,相关是描述两个随机变量序列或二元数据之间的统计关系,无论是否具有因果关系。广义上讲,相关性是统计上的关联程度,它通常指的是两个变量的线性相关的程度。比如商品的价格和消费者购买愿意数量之间的关系,也即所谓的需求曲线。

相关性是有用的,因为它们可以描述一种可在实践中加以利用的预测作用。例如,根据电力需求和天气之间的相关性,电力公司可能会在天气凉快时候生产更少的电力。在这个例子中,有一定的因果关系存在,因为极端天气导致人们使用更多的电力用于取暖或制冷。然而,一般而言,相关性的存在并不足以推断出因果关系的存在,也就是说相关性并不意味着因果关系。

连续信号里,为函数及的互相关函数定义为:

离散信号,假设两个信号序列x(n)及y(n),每个序列的能量都是有限能量序列,则x(n)及y(n)的互相关序列为:

那么互相关函数就是描述在连续信号或离散序列的相关程度的一种统计度量。

什么是相关系数?

最熟悉的度量两个量之间的相关性的方法是皮尔逊乘积矩相关系数(PPMCC),也称为“皮尔逊相关系数”,通常简称为“相关系数”。在数学上,它被定义为对原始数据的最小二乘拟合的质量(拟合程度或效果)。它是由数据集两个变量的协方差的比率,归一化到他们的方差的平方根得到的。数学上,两个变量的协方差除以标准差的乘积。

皮尔逊积矩相关系数试图通过两个随机序列的数据集建立一条最佳拟合曲线,实质上是通过列出期望和由此产生的皮尔逊相关系数表明实际数据集离预期值有多远。根据皮尔逊相关系数的符号,如果数据集的变量之间存在某种关系,可以得到负相关或正相关。其定义公式如下:

上述公式展开为:

在根据期望计算公式展开,就得到:

如果考察延迟d处的互相关,则上述公式就变为:

为了方便理解,本文就不考察延迟节拍了。

相关系数有啥用?

皮尔逊相关系数的绝对值不大于1是Cauchy–Schwarz不等式的推论(有兴趣的可以去找书看看)。因此,相关系数的值在[-1,1]之间。在理想的增加线性相关关系情况下,相关系数为+1;在理想的减少(反相关)线性关系情况下,相关系数为-1;在所有其他取值情况下,表示变量之间的线性相关程度。当它接近零时,更接近于不相关。系数越接近-1或1,变量之间的相关性越强。

故,相关系数其值范围分布在区间[-1,1]:

1表示完全正相关

0表示不相关

-1表示完全负相关

为了方便理解,假定两个随机序列按照下面各类情况分布,下面的数字为相关系数:

程序如何实现呢?

上述公式在实际编程时,当然可以直接按照公式编制代码,如果仔细观察会发现该公式可以进一步简化,过程省略:

由这个公式就很容易编程了,干货在这里,可以拿去稍加改造即可使用:

#include #include /*返回值在区间:[-1,1]*/ /*如返回-10,则证明输入参数无效*/ #definedelta0.0001f doublecalculate_corss_correlation(double*s1,double*s2,intn) { doublesum_s12=0.0; doublesum_s1=0.0; doublesum_s2=0.0; doublesum_s1s1=0.0;//s1^2 doublesum_s2s2=0.0;//s2^2 doublepxy=0.0; doubletemp1=0.0; doubletemp2=0.0; if(s1==NULL||s2==NULL||n<=0)       return -10;          for(int i=0;i-delta&&temp1-delta&&temp2

运行结果为:

pxyofs1ands2:0.997435 pxyofs1ands1:1.000000 pxyofs1ands1:-1.000000

将这三个信号绘制成波形来看看:

由图看出:

S1与S2非常相似,其相关系数为0.997435,高度相似

S1与-S1则刚好相位相反,理想反相关,其相关系数为-1

S1与S1则理所当然是一样的,其相关系数为1

再来一组信号对比一下:

其波形数据为:

doubles1[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 }; doubles6[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 }; doubles7[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的相关系数:

pxyofs1ands6:0.402428 pxyofs1ands7:0.612618

可见,S6、S7与S1的相关系数越来越大,从波形上看相似度也越来越大。

总结一下

通过相关系数可以比较完美的判断两个信号序列,或者两个随机变量之间的相似度。相关系数以及互相关函数应用很广,本文仅仅描述了一个工程上应用较多的实际栗子。事实上,该数学特性有着广泛的应用,有兴趣的可以深度学习探讨一下。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 函数
    +关注

    关注

    3

    文章

    4117

    浏览量

    61550
  • 数据集
    +关注

    关注

    4

    文章

    1186

    浏览量

    24466

原文标题:数学之美:判定两个随机信号序列的相似度

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    esp32获取时间戳的相关函数是哪个?

    esp32 获取时间戳的相关函数是哪个,我用了sntp_get_current_timestamp这个函数,编译的时候说找不到,有没有相关的例程参考?
    发表于 06-11 07:26

    协方差矩阵和相关系数矩阵的转化

    协方差矩阵和相关系数矩阵是统计学中常用的概念,在多变量统计分析中起着至关重要的作用。 在进行多变量统计分析时,我们通常会涉及多个变量之间的关系和相互作用。协方差矩阵和相关系数矩阵就是用来描述这些变量
    的头像 发表于 01-12 11:02 1007次阅读

    使用关系数据库中的半结构化数据

    NoSQL革命已经进入了关系世界。您可能正在使用关系数据库,但仍必须查询和理解隐藏在文本列、JSON或 XML文档中的半结构化数据。
    的头像 发表于 12-20 10:46 377次阅读
    使用<b class='flag-5'>关系数</b>据库中的半结构化数据

    传热系数和导热系数关系

    传热系数和导热系数关系  传热系数和导热系数是热传导现象中的两个关键概念。在热传导中,热量从一个物体传递到另一个物体。传热
    的头像 发表于 12-08 10:27 6725次阅读

    【小K技术漫谈】相关!不相关互相关技术是什么?

    在电子测量领域,互相关技术指的是分离不相关( No-Correlation)的信号,留下有“理想的”相关性的(Ideal Perfect Correlation)信号,在宽带解调应用中,射频工程师
    的头像 发表于 11-15 07:40 315次阅读
    【小K技术漫谈】<b class='flag-5'>相关</b>!不<b class='flag-5'>相关</b>?<b class='flag-5'>互相关</b>技术是什么?

    Python比较两个时间序列在图形上是否相似

    和谷值比较:通过比较两个时间序列中的峰值和谷值来进行比较。可以比较它们的幅度和位置。 相关性分析:计算两个时间序列之间的相关系数,从而确定它们是否存在线性关系。如果它们的相关系数接近1
    的头像 发表于 10-16 11:33 363次阅读

    基于虚拟仪器的胎儿心电提取实现与设计方案

    以及易于理解、构造和实现,nilabview等图形表示软件比Matlab更受欢迎。本研究以每分钟拍数、振幅及相关系数等参数来判断演算法的准确性。
    发表于 09-19 08:05

    复变函数的共轭和原函数关系

    复变函数的共轭和原函数关系  复变函数的共轭与原函数之间存在着密切的关系,这是因为共轭和原
    的头像 发表于 09-07 16:43 5128次阅读

    字典相关函数的使用(2)#Python

    程序函数python
    未来加油dz
    发布于 :2023年08月26日 23:57:06

    字典相关函数的使用(1)#Python

    程序函数python
    未来加油dz
    发布于 :2023年08月26日 23:55:53

    _67.第 5节 PowerBI实战 : 23 kendall相关系数相关性数据分析实践

    网络数据库代码Arduino
    充八万
    发布于 :2023年08月08日 23:42:47

    应用MATLAB(或Python)对数据进行数字特征估计与频谱分析

    。试应用MATLAB(或Python)对该数据进行分析,寻找数据规律。 实验要求: 1、编写MATLAB(或Python)程序; 2、将实验数据读入内存; 3、画出各气象数据的时域曲线; 4、计算各气象数据的数字特征:均值,方差,自相关序列,自相关系数
    发表于 08-02 16:19 15次下载

    65.第5节 PowerBI实战:21 Pearson相关系数 #硬声创作季

    Power
    充八万
    发布于 :2023年07月12日 15:03:13

    68.第5节 PowerBI实战:23.1 实践 SPSS实现3种相关系数的分析

    Power
    充八万
    发布于 :2023年07月12日 15:02:03

    66.第5节 PowerBI实战:22 Spearman相关系数

    Power
    充八万
    发布于 :2023年07月12日 15:00:53