声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 5436|回复: 4

[综合] 关于线性相关和循环相关

[复制链接]
发表于 2013-2-1 00:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
本帖最后由 Rainyboy 于 2013-2-1 01:01 编辑

在这里我想跟大家探讨一下“相关”中的两个概念。类似于卷积有线性卷积(linear convolution)和循环卷积(circular convolution);
相关也有线性相关(linear correlation)和循环相关(circular correlation)。
在Python 的scipy库和numpy库中,有一些计算“线性相关”的函数,没有函数直接用于计算“循环相关”。


在MATLAB 中,似乎xcorr()计算的是“线性相关”,而没有函数直接用于计算“循环相关”。

http://www.mathworks.cn/cn/help/signal/ref/xcorr.html
还有人专门写了一个叫cxcorr()来算“循环相关”:
http://www.mathworks.com/matlabcentral/fileexchange/4810-circular-cross-correlation

在Python中,cxcorr()函数可以这样实现:
  1. def cxcorr(a,v):
  2.       nom = np.linalg.norm(a[:])*np.linalg.norm(v[:])
  3.       return fftpack.irfft(fftpack.rfft(a)*fftpack.rfft(v[::-1]))/nom
复制代码


关于这些内容,我整理了一个小心得,见附件。
贴出来只是希望被大家阅读后纠正理解上的错误,请不吝指正!

我的疑问是:
1)为什么“循环相关”在两个平台上都缺乏标准程序?是因为用得不多?

就振动分析而言,经常我们会得到N个点的响应数据和N个点的激振力数据,

如果采用“线性相关”的手段对这两组数进行处理,会得到2N-1个数,在计算过程中对原始数据自动补零
但是其中只有1个是‘有效’的(类似于两个N点序列进行“线性卷积”,除去一前一后的“末端效应”,就只剩下1个点了)。

而如果采用“循环相关”,也将得到N个数据点,在计算过程中对原始数据周期延拓
因而不存在末端效应。

并且将原始数据视作“周期序列中的一段”不是比视作“前后都是零的序列中的非零段”更接近振动的应用场合么?


因此我的第二个问题是:
2)大家在用“相关”概念处理程序的时候,都用的哪种相关?是什么场合?

当然也可以不在意我的这些问题,随便聊聊这个话题。

##相关网址##
[1]       关于MATLAB中的xcorr() 的论述
http://www.mathworks.cn/cn/help/signal/ref/xcorr.html
[5]       关于 CircularCross-correlation的定义
http://en.wikipedia.org/wiki/Circular_convolution
http://cnx.org/content/m22974/latest/


相关及其在Python中的计算.pdf

772.48 KB, 下载次数: 20

回复
分享到:

使用道具 举报

发表于 2013-5-29 10:25 | 显示全部楼层
怎么没有人回应,我先说一点我的看法。相关一般用于随机信号研究,意义是一个信号当前波形与另一信号(可以是同一信号)的时移波形的相似程度。因此至于你说的“周期延拓”之后的时域波形,用作波形相似程度的计算还有依据吗?
发表于 2013-5-29 11:39 | 显示全部楼层
周期延拓可以处理周期信号(同周期),工程上的随机信号没有明显的周期(通常使用功率谱描述),这时候做循环相关还有意义吗?
 楼主| 发表于 2013-5-29 13:17 | 显示全部楼层

你这么一说,我算是有些明白了。可是根据线性相关的定义,要计算相关性的两组数据应该是不一样长的,对吗?因为如果一样长的话,根据末端效应,结果中只有一个数是有效的?
发表于 2013-5-29 16:15 | 显示全部楼层
Rainyboy 发表于 2013-5-29 13:17
你这么一说,我算是有些明白了。可是根据线性相关的定义,要计算相关性的两组数据应该是不一样长的,对吗 ...

数据量小的话可能会出现这个问题。当两个信号的数据量都很大时,补零产生的影响就可以忽略。应用的时候是分析两个信号之间的关系,不用把所有的数据都用上,稳态情况下1s或者2s的数据(采样频率一般是很高的)的数据就足以说明两个信号之间的关系了。当然对于确定性信号的周期信号,把一个周期内所有的数据都用上,结果肯定是最有效、最准确的。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-4-20 12:07 , Processed in 0.055387 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表