马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
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()函数可以这样实现:
- def cxcorr(a,v):
- nom = np.linalg.norm(a[:])*np.linalg.norm(v[:])
- return fftpack.irfft(fftpack.rfft(a)*fftpack.rfft(v[::-1]))/nom
复制代码
关于这些内容,我整理了一个小心得,见附件。
贴出来只是希望被大家阅读后纠正理解上的错误,请不吝指正!
我的疑问是:
1)为什么“循环相关”在两个平台上都缺乏标准程序?是因为用得不多?
就振动分析而言,经常我们会得到N个点的响应数据和N个点的激振力数据,
如果采用“线性相关”的手段对这两组数进行处理,会得到2N-1个数,在计算过程中对原始数据自动补零
但是其中只有1个是‘有效’的(类似于两个N点序列进行“线性卷积”,除去一前一后的“末端效应”,就只剩下1个点了)。
而如果采用“循环相关”,也将得到N个数据点,在计算过程中对原始数据周期延拓
因而不存在末端效应。
并且将原始数据视作“周期序列中的一段”不是比视作“前后都是零的序列中的非零段”更接近振动的应用场合么?
因此我的第二个问题是:
2)大家在用“相关”概念处理程序的时候,都用的哪种相关?是什么场合?
当然也可以不在意我的这些问题,随便聊聊这个话题。
##相关网址##
|