【问题标题】:MATLAB Cross Correlation Own codeMATLAB 互相关 自有代码
【发布时间】:2017-03-08 19:13:36
【问题描述】:

我正在尝试理解我的前任编写的代码。她没有在 MATLAB 中使用 xcorr,而是执行了以下操作。显然这似乎有效。如果有人能解释一下这里发生了什么,我将不胜感激。她说模式是通过计算下面的变量 sym 来对称的,在下面的代码中。

close all hidden

t = 0:0.01:2*pi;
x = sin(t)
plot(x,'k')
mu = mean(x)
sigma = std(x)

y = (x-mu)/(sigma);
hold on
plot(y,'r')

yrev = y(end:-1:1);
hold on 
plot(yrev)
hold on
sym = sum(y.*yrev/length(y))
plot(y.*yrev/length(y),'r*')

【问题讨论】:

  • 你的意思是连她都无法解释她做了什么!?这是在将单个向量作为输入(因此方差)时计算 covariance 的方式。检查公式。

标签: matlab cross-correlation


【解决方案1】:

sym 是 y 和 y 的倒数之间的normalised cross-correlation。

  • 如果sym 接近1,则y 是对称函数。
  • 如果sym 接近于零,则 y 是非对称函数
  • 如果 sym 接近于负一,则 y 是反对称函数

编辑:与xcorr的关系

如果你计算sym,你会得到同样的结果:

sym = xcorr(y, yrev, 0, 'coeff')

【讨论】:

  • 你的回答没有解释为什么这个结果和xcorr的结果不一致?
  • @NKN 我编辑了我的答案以纳入您的评论。
  • cool(+1),滞后为 0,coeff 标准化序列,使零滞后处的自相关等于 1。
  • sym 将等于 1 当且仅当 y 是精确对称函数
  • @m7913d 将不胜感激。 y 是曲线下的面积。点积与它的相反,是给我卷积而不是相关性。最后为什么要除以长度
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-22
  • 2012-08-31
  • 2011-09-11
  • 2014-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多